文件存在 - 没有这样的文件
File exists - no such file
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 是一样的,但我发现上面的代码不起作用。我只想知道为什么,仅此而已。
问题是 os.walk(myDir)
遍历所有子目录,递归!当 walk
下降到子目录时,root
将是该目录,而 myDir
仍然是搜索开始的根目录。
假设您有一个文件 C:\temp\a\b\c\foo.txt
。当os.walk
下降到c
时,myDir
仍然是C:\temp\a
,root
是C:\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
,这样就不会那么混乱了。
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 是一样的,但我发现上面的代码不起作用。我只想知道为什么,仅此而已。
问题是 os.walk(myDir)
遍历所有子目录,递归!当 walk
下降到子目录时,root
将是该目录,而 myDir
仍然是搜索开始的根目录。
假设您有一个文件 C:\temp\a\b\c\foo.txt
。当os.walk
下降到c
时,myDir
仍然是C:\temp\a
,root
是C:\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
,这样就不会那么混乱了。