在python3中使用os.walk时文件读取不正确

spl*_*ter 1 python file-not-found os.walk python-3.x

我正在使用该os.walk()方法浏览文件夹。在其中一个文件夹中,有大量文件,其中约有100,000个。这些文件如下所示:p_123_456.zip。但是它们被读为p123456.zip。确实,当我打开Windows资源管理器浏览文件夹时,在最初的几秒钟中文件看起来像p123456.zip,但随后将其外观更改为p_123_456.zip。这是一个奇怪的情况。

现在,我无法使用,time.sleep()因为所有文件夹和文件都已在循环行中读取到python变量中。这是代码片段:

    for root, dirs, files in os.walk(srcFolder):
        os.chdir(root)
        for file in files:
            shutil.copy(file, storeFolder)
Run Code Online (Sandbox Code Playgroud)

在最后一行中,我得到一个文件未找到异常,说该文件p123456.zip不存在。有谁遇到这个神秘的问题?反正绕过这个?这是什么原因?谢谢。

jsb*_*eno 5

您似乎并没有将实际的文件夹名称与文件名连接在一起。尝试将代码更改为:

for root, dirs, files in os.walk(srcFolder):
    for file in files:
        shutil.copy(os.path.join(root, file), storeFolder)
Run Code Online (Sandbox Code Playgroud)

os.chdir应该避免像瘟疫一样。一方面-如果更改成功,它将不再是您运行os.walk的目录-然后,chdir另一个文件夹上的第二个文件夹将失败(停止porgram或将您更改为意外的文件夹) 。

只需将文件夹名称添加为前缀,不要尝试使用chdir。

此外,作为从ShadowRanger以上,注释os.walk正式休息,如果你chdir的迭代里面- https://docs.python.org/3/library/os.html#os.walk -这可能是你有问题的根源。