【问题标题】:File exists - no such file文件存在 - 没有这样的文件
【发布时间】:2015-10-20 11:42:44
【问题描述】:
import os

myDir = "C:\\temp\\a"


for root, dirs, files in os.walk(myDir):
  for file in files:
    # fname = os.path.join(root, file) # this works fine, yeah!
    fname = os.path.join(myDir, file)
    print ("%r" % (fname))
    src = os.path.isfile(fname)
    if src == False:
      print ("%r :Fail" % (fname))
    f = open(fname,"r")
    f.close()

我希望两个版本的 fname 相同,但我发现上面的代码不起作用。我只是想知道为什么,仅此而已。

【问题讨论】:

    标签: python-2.7 path filenames


    【解决方案1】:

    问题是os.walk(myDir) 递归遍历所有子目录!当walk 下降到子目录时,root 将是那个目录,而myDir 仍然是搜索开始的根目录。

    假设您有一个文件C:\temp\a\b\c\foo.txt。当os.walk 下降到c 时,myDir 仍然是C:\temp\arootC:\temp\a\b\c。然后os.path.join(root, file) 将产生C:\temp\a\b\c\foo.txt,而os.path.join(myDir, file) 将产生C:\temp\a\foo.txt

    您可能希望将您的 myDir 变量分别重命名为 root,并将 root 重命名为 current,以免混淆。

    【讨论】:

    • 完美地解释了这一点!谢谢。
    猜你喜欢
    • 1970-01-01
    • 2014-08-04
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    • 2021-07-21
    • 1970-01-01
    相关资源
    最近更新 更多