使用Python处理目录(二):计算某个目录下特定文件类型中文件总行数
来源:互联网 发布:soylent 知乎 编辑:程序博客网 时间:2024/05/29 14:28
计算某个目录下特定文件的行数,从文件中读入配置参数,计算结果输出到文件指定文件:
该功能是基于第一篇系列文章《打印目录下的文件名》的基础上加以修改得到的,主要的逻辑是遍历目录下的文件,然后读取文件中的内容,计算行数。
为了方便修改配置,本文中的代码所需要的配置都是从文件中读取的。FilePath
标识文件路径,patterns
, single_level
同第一篇文章中的功能一样。exceptFile
指的是需要排除的目录,目的是将指定目录下特定的子目录不作为搜索计算的目录。outDir
表示统计结果打印的输出文件。
代码中频繁调用的.rstrip('\n')
目的是将文件中的 某一行的换行符去掉。 GetCommonElements
目的是取两个集合的交集 computerLineNum
计算某个文件有多少行,该函数利用了文件对象的enumerate
轻松的将文本行数统计了出来。
import fnmatch, osFilePath = ''patterns = ''single_level = FalseexceptFile = 'build;Depend'outDir = ''def ReadAllConfig(filename = 'Config.txt'): fileObj = open(filename, 'rU') global FilePath global patterns global single_level global exceptFile global outDir FilePath, patterns, single_level1, exceptFile, outDir= fileObj.readlines()[:] FilePath = FilePath.rstrip('\n') patterns = patterns.rstrip('\n') exceptFile = exceptFile.rstrip('\n') single_level1 = single_level1.rstrip('\n') outDir = outDir.rstrip('\n') if single_level1 == 'False': single_level = False else: single_level = Truedef GetCommonElements(firstSet, secondSet): return set(firstSet).intersection(set(secondSet))def allFiles(root, patterns = '*.cpp;*.h', single_level = False, yield_folders = False, exceptFile = ""): patterns = patterns.split(';') excpetFiles = exceptFile.split(';') for path, subdirs, files in os.walk(root): lastDirs = path.split('\\') newSet = GetCommonElements(lastDirs, excpetFiles) if len(newSet) != 0: continue if yield_folders: #add subdirs to the tail of files files.extend(subdirs) files.sort() for name in files: for pattern in patterns: if fnmatch.fnmatch(name, pattern): yield os.path.join(path, name) break #only deal one level of the dir if single_level: breakdef computerLineNum(strFileName): fileObj = open(strFileName, 'rU') count = 0 for count, LineContent in enumerate(fileObj): pass return count + 1def ComputerFilesTotalLineNumsInDir(dirName, outDir1): TotalCount = 0 dirName = os.path.normpath(dirName) fileObj1 = open(outDir1, 'w') for name in allFiles(dirName, patterns = patterns, exceptFile = exceptFile): count = computerLineNum(name) str1 = 'the line of the file %s is : %d'%(name, count) print(str1) fileObj1.write(str1) TotalCount += count str1 = 'the total line count of the dir %s is %d:'%(dirName, TotalCount) print(str1) fileObj1.write(str1) fileObj1.close()if __name__ == "__main__": ReadAllConfig() ComputerFilesTotalLineNumsInDir(FilePath, outDir)
0 0
- 使用Python处理目录(二):计算某个目录下特定文件类型中文件总行数
- python 删除目录下特定文件夹和文件
- 获取某个目录下特定格式文件列表
- 测试某个目录中文件是否存在
- python 中文件、目录比较
- 统计一个目录下所有普通文件的总行数
- 统计指定目录下Java源代码的总行数
- 获取指定目录下所有csv文件的总行数
- python脚本:计算某个目录下Code行数
- 使用python查找目录下特定后缀名的文件
- PHP计算目录中文件的大小
- 如何列出某个目录下的所有目录和文件
- linux利用管道和Python删除目录下某个特定名字文件夹
- 一个在DOS下处理中文和长名字目录和文件的程序(原创)
- 目录中文件内容处理小工具
- Python 删除()目录下全部文件特定行
- python中文件和目录操作
- python中文件和目录操作
- LightOJ 1074 Extended Traffic spfa+邻接表
- 文件操作案例-大文件加解密
- problem - 616B -codeforces
- 欢迎使用CSDN-markdown编辑器
- 2016-01-19 FFC
- 使用Python处理目录(二):计算某个目录下特定文件类型中文件总行数
- 操作字符串的 C 函数
- myeclipse和输入法冲突的问题
- hadoop下运行mapreduce程序Failed to set permissions of path:的解决
- 按照层序,从左到右遍历
- unity基础开发 1. 射线&碰撞器的原理和用法
- Oracle12c中数据泵新特性之功能增强(expdp, impdp)
- C++学习之继承篇一(继承权限)
- 算法导论第三版第四章思考题