以下是使用Python统计文件行数的完整攻略:
1. 判断文件类型
首先需要确定需要统计的文件类型,可以根据文件后缀名进行判断。如果只需要统计代码文件(如.py、.java、.cpp等),可以使用os模块的walk函数遍历文件夹,判断每个文件的后缀名是否符合要求。
import os
def walk_folder(folder_path):
for dirpath, dirnames, filenames in os.walk(folder_path):
for filename in filenames:
if filename.endswith(".py") or filename.endswith(".java") or filename.endswith(".cpp"):
file_path = os.path.abspath(os.path.join(dirpath, filename))
count_line(file_path)
def count_line(file_path):
with open(file_path, 'r', encoding='utf-8') as f:
line_num = 0
for line in f:
if line.strip():
line_num += 1
print(f"{file_path}共{line_num}行代码")
以上代码中,使用os模块的walk函数遍历文件夹中的每一个文件,如果文件后缀名符合要求,则调用count_line函数统计文件行数。
2. 支持单文件统计
除了支持遍历文件夹进行统计外,还需要支持单个文件的统计。可以通过命令行参数的方式传递需要统计的文件路径,也可以通过input函数进行交互式输入。
import sys
def main():
if len(sys.argv) > 1:
# 读取命令行参数
file_path = sys.argv[1]
if not os.path.exists(file_path):
print("文件不存在")
return
count_line(file_path)
else:
# 交互式输入
while True:
file_path = input("请输入文件路径:")
if not os.path.exists(file_path):
print("文件不存在")
continue
count_line(file_path)
break
if __name__ == '__main__':
main()
以上代码中,使用sys模块的argv列表读取命令行参数进行文件路径获取,如果没有命令行参数,则通过input函数进行交互式输入。
示例1:对文件夹进行遍历统计
假设我们有一个文件夹,里面包含了一些Python和Java代码文件,我们需要统计每个文件的行数。
$ tree test_folder
test_folder
├── java
│ └── HelloWorld.java
└── python
├── hello.py
└── count.py
使用walk_folder函数遍历文件夹,统计文件行数。
import os
def walk_folder(folder_path):
for dirpath, dirnames, filenames in os.walk(folder_path):
for filename in filenames:
if filename.endswith(".py") or filename.endswith(".java"):
file_path = os.path.abspath(os.path.join(dirpath, filename))
count_line(file_path)
def count_line(file_path):
with open(file_path, 'r', encoding='utf-8') as f:
line_num = 0
for line in f:
if line.strip():
line_num += 1
print(f"{file_path}共{line_num}行代码")
if __name__ == '__main__':
walk_folder('test_folder')
输出结果:
/Users/test_folder/python/hello.py共4行代码
/Users/test_folder/python/count.py共13行代码
/Users/test_folder/java/HelloWorld.java共2行代码
示例2:单个文件交互式统计
假设我们需要手动输入统计的文件路径,可以执行以下代码:
import os
def count_line(file_path):
with open(file_path, 'r', encoding='utf-8') as f:
line_num = 0
for line in f:
if line.strip():
line_num += 1
print(f"{file_path}共{line_num}行代码")
if __name__ == '__main__':
while True:
file_path = input("请输入文件路径:")
if not os.path.exists(file_path):
print("文件不存在")
continue
count_line(file_path)
break
输出结果:
请输入文件路径:test_folder/python/hello.py
test_folder/python/hello.py共4行代码
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用python统计文件行数示例分享 - Python技术站