一、python统计代码
方法一(利用迭代思想)、
import os
def hand_code_num(file_path,count_num):
#计数文件代码数量
with open(file_path, "r", encoding="utf-8") as rf:
for line in rf:
#分行判断文件是否满足要求
if not (line.startswith("#") or line.startswith("\n")):
count_num += 1
return count_num
def check_code_number(file_path,count_num=0):
'''代码计数'''
#判断是否是py文件
if os.path.isfile(file_path) and file_path.endswith(".py"):
count_num=hand_code_num(file_path,count_num)
else:
#取得路径下的文件名
for file_last_name in os.listdir(file_path):
#对file_path的下的文件名进行拼接,获得新的file_path给变量abs_path
abs_path=os.path.join(file_path,file_last_name)
if os.path.isfile(abs_path) and abs_path.endswith(".py"):
count_num = hand_code_num(abs_path, count_num)
elif os.path.isdir(abs_path):
#如果新的路径是文件夹就迭代,重复步骤
count_num=check_code_number(abs_path,count_num)
return count_num
if __name__ == '__main__':
path="/Users/haiyuanyang/Desktop/python9"
res = check_code_number(path)
print(res)
方法二(拼接出文件夹下所有的文件路径)、
#one
import os
def count_code_num_func(file_path,count_num=0):
sepa_info=os.walk(file_path)
for path_tuple in sepa_info:
for file_name in path_tuple[2]:
if file_name.endswith(".py"):
com_path=os.path.join(path_tuple[0],file_name)
if os.path.isfile(com_path):
with open(com_path,"r",encoding="utf-8") as rf:
for line in rf:
if not (line.startswith("#") or line.startswith("\n")):
count_num+=1
print(com_path)
return count_num
path="/Users/haiyuanyang/Desktop/python9/"
res = count_code_num_func(path)
print(res)
#two
3146
import os
import sys
def count_code_lines(filename):
res = os.walk(filename)
count = 0
for path, _, file_list in res:
for file in file_list:
filename = os.path.join(path, file)
if filename.endswith('py'):
with open(filename, 'r', encoding='utf8') as fr:
file_count = 0
for i in fr:
if i.startswith('#') or i.startswith('\n'):
continue
count += 1
file_count += 1
print('{}有{}行'.format(filename,file_count))
print('总共有{}行'.format(count))
if __name__ == '__main__':
# filename = sys.argv[1]
res=count_code_lines(r'/Users/haiyuanyang/Desktop/python9/')
print(res)
count_code_lines(filename)
二、os模块循环删除文件
import os
def delete_path(abs_path):
if os.path.isfile(abs_path):
os.remove(abs_path)
else:
for i in os.listdir(abs_path):
new_path=os.path.join(abs_path,i)
if os.path.isfile(new_path):
os.remove(new_path)
else:
delete_path(new_path)
os.rmdir(abs_path)
if __name__ == '__main__':
delete_path("/Users/haiyuanyang/Desktop/python8/day171717171")