
python怎么遍历电脑文件
如果我只想知道一个目录里都有哪些文件,不需要读取内容,Python 有哪些常用做法?
使用 os.listdir 或 pathlib 查看目录内容
可以用 Python 自带的 os.listdir() 获取目录中的所有条目,也可以用 pathlib.Path.iterdir() 遍历目录。若只关心文件名,os.listdir() 很直接;若想写出更现代、可读性更好的代码,pathlib 更推荐。示例:
from pathlib import Path
p = Path('D:/test')
for item in p.iterdir():
print(item.name)
如果还想区分文件和文件夹,可以结合 item.is_file() 和 item.is_dir() 判断。
我在遍历目录时,只想对普通文件做操作,不想把子目录也当作文件处理,应该怎么写?
在遍历时通过判断类型筛选文件
可以在遍历目录时对每个条目做类型判断,只对文件执行操作。使用 pathlib 时很方便:
from pathlib import Path
p = Path('D:/test')
for item in p.iterdir():
if item.is_file():
print(item)
如果目录层级比较多,也可以配合递归遍历。只遍历当前层时用 iterdir(),想连子目录里的文件一起处理,可以用 rglob('*') 再过滤文件类型。
我的目录结构比较深,想把所有层级里的文件都找出来,Python 有什么简单写法?
使用 os.walk 或 pathlib 的 rglob 递归遍历
递归遍历目录时,os.walk() 和 pathlib.Path.rglob() 都很常用。os.walk() 会逐层返回当前目录、子目录和文件列表;rglob() 则可以直接匹配所有层级的文件。示例:
from pathlib import Path
p = Path('D:/test')
for file_path in p.rglob('*'):
if file_path.is_file():
print(file_path)
如果你想同时获取文件夹和文件,os.walk() 更灵活;如果你只想快速拿到所有文件路径,rglob() 会更简洁。
我不仅想找到文件,还想在遍历过程中顺便打开并读取文本内容,应该注意什么?
遍历文件路径后用 open 读取内容
可以先遍历拿到文件路径,再用 open() 打开文本文件读取内容。建议明确指定编码,避免乱码问题。示例:
from pathlib import Path
p = Path('D:/test')
for file_path in p.rglob('*.txt'):
if file_path.is_file():
with open(file_path, 'r', encoding='utf-8') as f:
content = f.read()
print(file_path.name)
print(content)
如果文件很大,不建议一次性读入内存,可以用 for line in f: 逐行处理,这样更省资源。