无法打开或读取日志文件:FileNotFoundError问题求助
问题原因
你只收集了日志文件的文件名,但没有保存文件的完整路径。os.walk遍历目录时,root变量是当前遍历到的子目录路径,而filename只是该目录下的文件名。当你用open(filename, 'r')打开文件时,Python会在当前脚本的工作目录中查找这个文件,而不是它实际所在的子目录,所以触发了FileNotFoundError。
解决方法
在收集文件信息时,用os.path.join(root, filename)拼接出文件的完整路径,替换原来只存filename的逻辑。这样打开文件时就能准确定位到文件的实际位置。
修正后的代码
import os FILE_PATHS = [] # 改为存储文件完整路径 FILE_COUNT = 0 dir_path = r"C:\Users\me\Documents\Python Scripts\Log Parsing\Logs" for root, dirs, files in os.walk(dir_path): for filename in files: # 拼接完整路径并存入列表 full_path = os.path.join(root, filename) FILE_PATHS.append(full_path) FILE_COUNT += 1 print(filename) print(FILE_COUNT) for file_path in FILE_PATHS: # 从完整路径中提取文件名用于输出提示 filename = os.path.basename(file_path) print(filename," contains the following string:\n") with open(file_path, 'r') as f: # 用with语句自动关闭文件,更安全 for line in f: if "their browser" in line: print(line) print('\n')
额外优化点
- 使用
with open(...)语句代替手动调用f.close(),可以确保文件在操作后自动关闭,避免资源泄漏。 - 变量名从
FILENAMES改为FILE_PATHS,更贴合实际存储的内容,提高代码可读性。
内容的提问来源于stack exchange,提问作者subzeroLV
相关产品推荐
相关产品推荐

