中递归查找文件
我正在尝试编写一个python脚本,以递归中给定目录中具有绝对路径的所有文件,并在其前面列出其UID和文件所有者。(类似:LS -LR(我写了这本书,但在执行结束时给我一个错误:
import os
for folder, subfolders, files in os.walk(os.getcwd()):
for file in files:
filePath = os.path.abspath(file)
print(filePath, os.stat(file).st_uid)
import os
import glob
for filename in glob.iglob('./**/*', recursive=True):
print(os.path.abspath(filename), os.stat(filename).st_uid)
需要python 3.5或更高使用glob((在Python?
files
只是文件名本身,不是从当前位置到文件的路径。
尝试
import os
for folder, subfolders, files in os.walk(os.getcwd()):
for file in files:
filePath = os.path.abspath(os.path.join(folder, file))
print(filePath, os.stat(file).st_uid)
os.path.abspath()
不做您认为做的事情。它或多或少只是将getcwd()
的结果预先到您传递的字符串中,它对该文件的实际位置一无所知。因此,当您的循环在子目录中进入名称时,abspath()
是错误的,因为当前目录仍然是上述级别。
您可以从os.walk
的输出中获取正确的目录名称,请参阅此处的文档。