如何读取指定目录下所有文件的每一行内容?
问题原因
你第二段代码没有输出是因为f.readlines()仅会将文件内容读取为列表返回,你没有将该返回值传入print()方法,内容仅被加载到内存但没有输出到终端。另外直接使用open()后未主动关闭文件,存在文件句柄泄漏的风险。
正确实现方案
方案1:使用标准上下文管理器读取(兼容传统写法)
from pathlib import Path p = Path('tmp') for file in p.iterdir(): # 过滤子目录,仅处理文件 if file.is_file(): print(f"--- {file.name} 内容 ---") # 用with上下文管理器自动处理文件关闭 with open(file, 'r', encoding='utf-8') as f: # 读取内容后打印 content = f.read() print(content)
方案2:使用Path原生方法(更简洁的pathlib写法)
Path对象自带read_text()方法,无需手动处理文件打开关闭逻辑:
from pathlib import Path p = Path('tmp') for file in p.iterdir(): if file.is_file(): print(f"--- {file.name} 内容 ---") print(file.read_text(encoding='utf-8'))
注意事项
- 增加
is_file()判断可以避免尝试打开目录时抛出异常 - 显式指定
encoding='utf-8'可以避免不同操作系统默认编码不一致导致的乱码问题
内容的提问来源于stack exchange,提问作者jgg
相关产品推荐
相关产品推荐

