【发布时间】:2022-01-19 19:30:27
【问题描述】:
尝试编写一个遍历文件系统并返回绝对路径和文件名以供另一个函数使用的函数。
例如"/testdir/folderA/222/filename.ext"。
尝试了多个版本后,我似乎无法正常工作。
filesCheck=[]
def findFiles(filepath):
files=[]
for root, dirs, files in os.walk(filepath):
for file in files:
currentFile = os.path.realpath(file)
print (currentFile)
if os.path.exists(currentFile):
files.append(currentFile)
return files
filesCheck = findFiles(/testdir)
这会返回
"filename.ext"(只有一个)。
用currentFile = os.path.join(root, file) 替换os.path.realpath(file),它会进入第一个目录中的循环。尝试os.path.join(dir, file) 失败,因为我的文件夹之一被命名为222。
我转了一圈,距离有点近,但无法让它发挥作用。 使用 Python 3.6 在 Linux 上运行
【问题讨论】:
-
为什么要测试 os.walk 返回的文件是否真的存在?如果它实际上不存在,它怎么能被退回?
-
你能解释一下当你使用 os.path.join 时函数是如何进入循环的吗?这应该是正确的解决方案,但你得到什么样的输出?
-
你认为你要附加什么
files?请注意,有很多事情你称之为files,而正在发生的事情可能不是你想的那样。事实上,你的程序会结束吗? -
为了 100% 清晰,将
files=[]重命名为retval=[],然后附加到它并返回它而不是files,因为files在你的for循环中隐藏了原始files。通过这些更改,您的程序运行良好。 -
回复评论