9.2 os模块_统计代码行数

9.2 os模块

1.列出目录下的所有文件,以列表形式存储

import os

dir_list=os.listdir('D:\第九章 常用模块')
print(dir_list)
#输出:['.idea', '9.2 os模块.py', 'test.py']

2. rename ,重命名

os.rename(r'D:\第九章 常用模块\test.py',r'D:\第九章 常用模块\test1.py')

3 删除文件


os.remove(r'D:\第九章 常用模块\test1.py')

4 拼接路径

r'D:\第九章 常用模块\json\coco.json'
r'D:\第九章 常用模块\json/coco.json'
#不同操作系统拼接方式不一样

res=os.path.join(r'D:\第九章 常用模块\json','coco.json')
print(res)
输出:D:\第九章 常用模块\json\coco.json
会按照不同系统拼接处不同的路径

5.判断是否为一个文件


res=os.path.isfile(r'D:\第九章 常用模块\json\coco.json')
print(res)
输出:True

判断是否为文件夹
res=os.path.isdir(r'D:\第九章 常用模块\json')
print(res)
输出:True

用处
新建‘coco’.json,判断有没有用户,没有创建json文件夹。

6. 判断判断文件是否存在

res=os.path.exists(r'D:\第九章 常用模块\json\coco.json')
print(res)
输出:True

7.新建文件夹

os.mkdir(r'D:\第九章 常用模块\test')

8. 文件路径生成器

res=os.walk(r'D:\第九章 常用模块')
print(res)
#输出:<generator object walk at 0x0000029F3BCC4600>
#输出生成器

for i in res:
    print(i)
# 输出:
('D:\\第九章 常用模块', ['.idea', 'json', 'test'], ['9.2 os模块.py'])
('D:\\第九章 常用模块\\.idea', ['inspectionProfiles'], ['.gitignore', 'misc.xml', 'modules.xml', 'workspace.xml', '第九章 常用模块.iml'])
('D:\\第九章 常用模块\\.idea\\inspectionProfiles', [], ['profiles_settings.xml'])
('D:\\第九章 常用模块\\json', [], ['coco.json'])
('D:\\第九章 常用模块\\test', [], [])


# 输出类型为元组tuple[0]为当前路径,为字符串形式;tuple[1]为当前路径下的文件夹,以列表形式存储,tuple[2]为当前路径下的文件,以列表形式存储。
# 会遍历到当前路径文件夹列表中所有文件夹

# 拿到json下的所有文件,文件路径+文件名,可以拼出路径,获取所有文件的绝对路径。

9. 分割文件名

print(os.path.split(r'D:\第九章 常用模块\test\test.py'))

输出:('D:\\第九章 常用模块\\test', 'test.py'),将文件名切割出来
  • 小练习,统计项目行数
def count_code_lines(filedir):
    res=os.walk(filedir)
    count=0 #计数器,统计代码行数
    for path,_,files_lis in res: 
        # res为一个生成器,每次生成一个元组取第一个元素和最后一个元素拼接就是文件路径
        for file in files_lis:
            filename=os.path.join(path,file)

            #只要py文件
            if filename.endswith('.py'):
                with open(filename,'r',encoding='utf-8') as f:
                    file_count=0
                    for i in f:
                        if i.startswith('#') or i.startswith('\n'):
                            continue
                        count+=1
                        file_count+=1
                    print(f'{filename}有{file_count}代码')



    print(f'总代码行数{count}')

if __name__ == '__main__':
    count_code_lines(r'D:\第九章 常用模块')
额外补充:.ipynb文件批量转.py文件命令:jupyter nbconvert --to python *.ipynb
命令行运行统计代码:进入当前目录->输入命令:python test.py '要统计的文件夹'
posted @ 2025-08-31 20:31  bokebanla  阅读(6)  评论(0)    收藏  举报