首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

递归计算代码行数,包括压缩(zip)文件

递归计算代码行数,包括压缩(zip)文件,可以通过以下步骤实现:

  1. 遍历指定目录下的所有文件和文件夹。
  2. 对于每个文件,判断其文件类型是否为代码文件(如.py、.java、.cpp等),如果是则进行下一步操作。
  3. 打开代码文件,逐行读取文件内容,并统计有效代码行数(排除空行、注释行等)。
  4. 对于每个文件夹,递归调用上述步骤,获取其内部所有文件的代码行数。
  5. 统计所有文件的代码行数,并输出结果。

对于压缩文件(如.zip),需要先解压缩文件,然后再按照上述步骤进行计算。可以使用Python编程语言实现该功能,以下是一个示例代码:

代码语言:txt
复制
import os
import zipfile

def count_code_lines(directory):
    total_lines = 0

    for root, dirs, files in os.walk(directory):
        for file in files:
            file_path = os.path.join(root, file)
            if file.endswith(('.py', '.java', '.cpp')):
                with open(file_path, 'r') as f:
                    lines = f.readlines()
                    code_lines = sum(1 for line in lines if line.strip() and not line.strip().startswith('#'))
                    total_lines += code_lines

    return total_lines

def count_code_lines_in_zip(zip_file):
    total_lines = 0

    with zipfile.ZipFile(zip_file, 'r') as z:
        for file_info in z.infolist():
            if not file_info.is_dir():
                file_extension = os.path.splitext(file_info.filename)[1]
                if file_extension.endswith(('.py', '.java', '.cpp')):
                    with z.open(file_info) as f:
                        lines = f.readlines()
                        code_lines = sum(1 for line in lines if line.strip() and not line.strip().startswith('#'))
                        total_lines += code_lines

    return total_lines

# 示例用法
directory_path = '/path/to/directory'
zip_file_path = '/path/to/zip_file.zip'

code_lines_in_directory = count_code_lines(directory_path)
code_lines_in_zip_file = count_code_lines_in_zip(zip_file_path)

print(f"代码行数(目录): {code_lines_in_directory}")
print(f"代码行数(压缩文件): {code_lines_in_zip_file}")

这段代码可以计算指定目录下所有代码文件的代码行数,并且可以解压缩文件并计算其中代码文件的代码行数。请注意,这只是一个示例代码,实际应用中可能需要根据具体情况进行适当的修改和优化。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云对象存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯云云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 腾讯云容器服务(TKE):https://cloud.tencent.com/product/tke
  • 腾讯云人工智能(AI):https://cloud.tencent.com/product/ai
  • 腾讯云物联网(IoT):https://cloud.tencent.com/product/iot
  • 腾讯云移动开发(移动推送、移动分析):https://cloud.tencent.com/product/mps
  • 腾讯云数据库(MySQL、MongoDB、Redis等):https://cloud.tencent.com/product/cdb
  • 腾讯云区块链服务(BCS):https://cloud.tencent.com/product/bcs
  • 腾讯云视频处理(点播、直播):https://cloud.tencent.com/product/vod
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

VBA解压缩ZIP文件04——解析ZIP文件结构

使用压缩软件打开一个ZIP文件的时候,可以看到这个ZIP文件里面的文件信息,如下是使用7z压缩软件打开一个xlsm Excel文件: ?...从中主要可以看到文件的名称,文件压缩后的大小以及文件压缩前的大小。 其实这个时候,7z压缩软件并没有真正解压这个ZIP文件,仅仅是读取了它的信息,而这些信息的读取就是解析ZIP文件结构的过程。...ZIP文件结构 在前面介绍ZIP压缩过程的时候,主要是讲了压缩软件如何将原始的文件进行压缩,然后保存压缩信息,保存压缩信息之前,压缩软件还会在压缩信息的前面保存一些文件的信息,主要结构如下: 文件1的LocalFileHeader...文件1的压缩信息 文件1的data descriptor ……………… 文件N的LocalFileHeader 文件N的压缩信息 文件N的data descriptor 文件1的CentralDirectoryHeader...文件,获取zip压缩文件信息 'FileName ZIP文件完整路径 'Return 返回出错信息 Function Parse(FileName As String) As String

3.2K20
  • VBA解压缩ZIP文件02——压缩过程

    ZIP压缩过程 01 扫描文件 压缩程序首先会扫描被压缩文件,然后将文件的信息分为3类: literal 未被处理的 length 长度信息 distance 距离信息...ZIP压缩是按照Byte为单位对原始文件进行处理的,literal代表的就是原始的Byte数据并没有被压缩。...02 数字的处理 扫描得到的3种数字,在ZIP中不是直接使用这些数据来保存压缩信息的,做了进一步的处理。...最前面使用3个bit记录Header信息: 第一个比特: 如果是1,表示此部分为最后一个压缩数据块; 否则表示这是.ZIP文件的某个中间压缩数据块,后面还有其他数据块 第2、3比特表示3个选择: 00...注意:ZIP是对每个文件都单独压缩的,而且每个文件还可能会分块进行压缩(这也是Header的第1个bit的作用,标志是否是最后1个块),所以每个使用了动态Huffman的压缩的块都是上面这种结构。

    2.2K20

    linux系统zip压缩文件命令

    zip程序将一个或多个压缩文件与有关文件的信息(名称、路径、日期、上次修改的时间、保护和检查信息以验证文件完整性)一起放入一个压缩存档中。可以使用一个命令将整个目录结构打包到zip存档中。...对于文本文件来说,压缩比为2:1和3:1是常见的。zip只有一种压缩方法(通缩),并且可以在不压缩的情况下存储文件。...zip会自动为每个要压缩文件选择更好的两个文件(通缩或存储,如果选择bzip2,则选择bzip2或Store)。...字尾字符串> 不压缩具有特定字尾字符串的文件 参考实例 将 /home/html/ 这个目录下所有文件文件夹打包为当前目录下的 html.zip: [root@xxx ~]# zip -q -r html.zip.../home/html 压缩文件 cp.zip 中删除文件 a.c: [root@xxx ~]# zip -dv cp.zip a.c 把/home目录下面的mydata目录压缩为mydata.zip

    15.3K00

    VBA解压缩ZIP文件00

    什么是ZIP 使用过电脑的应该都接触过ZIP文件,比如Windows系统,选择文件或者文件夹,右键点击发送到压缩(zipped)文件夹,这个就是完成了对文件压缩,所使用的压缩文件格式就是ZIP,生成的文件后缀就是...基本上所有的压缩软件都支持这种格式的压缩和解压缩,比如7z压缩软件: ?...更为常见的应该就是2007版本以上的Office文件了,包括Excel、Word、PPT等,默认都是使用ZIP格式保存文件的,可以将文件的后缀修改为.zip后,直接双击打开,Windows系统也是自带了压缩和解压缩...有什么作用 实现这么一个功能其实没什么很大作用,而且支持ZIP压缩和解压缩的东西应该非常的多,但是个人认为通过这么一个学习过程,对本身VBA的学习还是很有帮助的。...另外可以使用VBA代码在内存中解压缩ZIP数据,在某些场合还是可以用到的。

    1.2K30

    VBA解压缩ZIP文件08——解压-没有压缩

    解析了ZIP文件结构后,我们就能够通过LocalFileHeader的信息计算出压缩信息所在ZIP文件中的偏移,并读取相应的压缩数据。...读取了压缩数据之后,接下来就是对数据进行解压,在VBA解压缩ZIP文件02——压缩过程中讲到了,有3种压缩方式,最简单的就是没有压缩。...这种没有压缩的数据块,压缩程序在数据块的前面存放了3个bit的Header,第2、3个bit都是0,然后压缩程序会在这里补齐1个Byte。...因为ZIP压缩数据的存储最小单位是bit,某一个压缩数据块,它很有可能不是从某个Byte开始的,所以在解压的过程中,需要一直记录bit的位置,在碰到没有压缩的数据块的时候,补齐到8的整数倍。...补齐之后,压缩数据块使用2个byte存储了没有压缩过的数据的长度LEN,再用2个byte记录了LEN的补码NLEN,根据这个,解压代码如下: Private Function InflateNoCompression

    1.5K20

    linux zip 删除源文件,linux zip命令参数及用法详解–linux压缩zip文件命令

    /html 上面的命令操作是将绝对地址的文件文件夹进行压缩.以下给出压缩相对路径目录 比如目前在Bliux这个目录下,执行以下操作可以达到以上同样的效果. zip –q –r html.zip html.../html/ 这个目录下所有文件文件夹打包为当前目录下的html.zip zip –q –r html.zip /home/Blinux/html 上面的命令操作是将绝对地址的文件文件夹进行压缩...unzip命令则用来解压缩zip文件。 1....我想把一个文件abc.txt和一个目录dir1压缩成为yasuo.zip: # zip -r yasuo.zip abc.txt dir1 2.我下载了一个yasuo.zip文件,想解压缩: # unzip...4.我有一个很大的压缩文件large.zip,我不想解压缩,只想看看它里面有什么: # unzip -v large.zip 5.我下载了一个压缩文件large.zip,想验证一下这个压缩文件是否下载完全了

    7.1K10

    Linux zip命令:压缩文件或目录

    如果没有的话需要安装,使用: yum install zip -y yum install unzip -y 安装zip  安装unzip  zip压缩unzip用于解压,故而需要下载两个包...目录 zip命令压缩文件语法: zip命令解压文件语法: ---- zip命令压缩文件语法: zip -选项 压缩文件名.zip 压缩文件夹名 一般示例: zip -r dir.zip dir 选项...-m 将文件压缩之后,删除原始文件,相当于把文件移到压缩文件中。 -v 显示详细的压缩过程信息。 -q 在压缩的时候不显示命令的执行过程。...zip命令解压文件语法: unzip [选项] 压缩包名 一般使用:unzip -d dir.zip 选项 含义 -d 目录名 将压缩文件解压到指定目录下。...-n 解压时并不覆盖已经存在的文件。 -o 解压时覆盖已经存在的文件,并且无需用户确认。 -v 查看压缩文件的详细信息,包括压缩文件中包含的文件大小、文件名以及压缩比等,但并不做解压操作。

    7.5K20

    Linux压缩和解压zip格式的文件

    zip 格式文件是 Windows 和 Linux 系统都通用的压缩文件类型,属于几种主流的压缩格式(zip、rar等)之一,是一种相当简单的分别压缩每个文件的存储格式。...我们首先要做的应该是安装zip [root@localhost ~]# yum install -y unzip zip 压缩 那么我们应该如何在Linux下把文件压缩成.zip呢,其命令基本格式如下:...[root@localhost ~]# zip [选项] 压缩包名 源文件或源目录列表 注意:压缩包名后要加扩展名(.zipzip 命令常用选项及含义 选项 含义 -r 递归压缩目录,及将制定目录下的所有文件以及子目录全部压缩...-u 更新压缩文件,即往压缩文件中添加新文件 例子: 把/home目录下面的mydata目录压缩为mydata.zip  [root@localhost ~]# zip -r mydata.zip...-n 解压时并不覆盖已经存在的文件。 -o 解压时覆盖已经存在的文件,并且无需用户确认。 -v 查看压缩文件的详细信息,包括压缩文件中包含的文件大小、文件名以及压缩比等,但并不做解压操作。

    6.9K10

    Linux zip命令:压缩文件或目录

    我们经常会在 Windows 系统上使用 “.zip”格式压缩文件,其实“.zip”格式文件是 Windows 和 Linux 系统都通用的压缩文件类型,属于几种主流的压缩格式(zip、rar等)之一,...是一种相当简单的分别压缩每个文件的存储格式,本节要讲的 zip 命令,类似于 Windows 系统中的 winzip 压缩程序,其基本格式如下: [root@localhost ~]#zip [选项]...压缩包名 源文件或源目录列表 注意,zip 压缩命令需要手工指定压缩之后的压缩包名,注意写清楚扩展名,以便解压缩时使用。...~]# ll ana.zip -rw-r--r-- 1 root root 935 6月 1716:00 ana.zip #压缩文件生成 不仅如此,所有的压缩命令都可以同时压缩多个文件,例如: [root...~]# ls -dl dir1.zip -rw-r--r-- 1 root root 160 6月 1716:22 dir1.zip #压缩文件生成

    1.4K40

    PhalApi-Zip--压缩文件处理类

    #PhalApi-Zip -- 压缩文件处理类 ##前言 这是笔者在工作中,同事找到的一个比较不错的文件压缩类,也经过了实际的使用很不错所以分享处理,特此鸣谢:@牧鱼人 附上: 官网地址:http://...安装使用 此扩展只需要简单的把文件放到Library目录下即可使用使用方法如下: $zip = new Zip_Lite(); 遍历指定文件夹 $zip = new Zip_Lite(); $filelist...>\r\n", $file); 压缩到服务器 $zip = new Zip_Lite(); $zip->Zip("需压缩文件所在目录", "ZIP压缩文件名"); 压缩并直接下载 $zip = new...Zip_Lite(); $zip->ZipAndDownload("需压缩文件所在目录"); 解压文件 $zip = new Zip_Lite(); $zipfile = "ZIP压缩文件名...$zip = new Zip_Lite(); $array = $zip->GetZipInnerFilesInfo(ZIP压缩文件名); for($i=0; $i<count($array); $i

    90270
    领券