首页 > 解决方案 > Python:“FileNotFoundError”尽管能够打印此类文件

问题描述

我正在编写一个 Python3 脚本,其中代码遍历目录和子目录以提取所有 gzip 压缩的 warc 文件。我还想补充一点,文件不在我的主目录中

file_path = os.path.join('/nappa7/pip73/Service')   
walk_file(parallel_bulk, file_path)

也许 python 没有在我认为的地方寻找,但是,这是我的 walk_file 函数:

def walk_file(bulk, file_path): 
warc = warcat.model.WARC()
try:
    for (file_path,dirs,files) in os.walk(file_path):
        for filenames in files:
            if filenames.endswith('.warc.gz'):
                warc.load(filenames)
except ValueError:
    pass

当我用这样的打印语句替换 warc.load(filenames) 时:

            if filenames.endswith('.warc.gz'):
                print(filenames)    

文件名按预期打印到控制台上。因此,它让我相信 python 能够成功定位所有 warc.gz 文件。但是,当我尝试使用 warc.load(filenames) 时,我得到:

FileNotFoundError: [Errno 2] No such file or directory: 'Sample.warc.gz'

我当然可以使用一些指导。谢谢你。


因此,对于其他有类似问题的人:将代码更改为此有效:

warc.load(os.path.join(file_path, filenames))

标签: python-3.x

解决方案


您需要使用os.path.join(file_path, filenames)而不仅仅是filenames.

否则操作系统会在当前目录而不是file_path.

filenames(当它指的是单个文件名时,为什么是复数?)


推荐阅读