我正在尝试编写一个python脚本,以递归方式列出给定目录中具有绝对路径的所有文件,并在它们前面列出它们的UID和文件所有者。 (类似于:ls -lR) 我写了这个,但它在执行结束时给了我一个错误:
aggregate
答案 0 :(得分:1)
import os
import glob
for filename in glob.iglob('./**/*', recursive=True):
print(os.path.abspath(filename), os.stat(filename).st_uid)
需要Python 3.5或更高版本 Use a Glob() to find files recursively in Python?
答案 1 :(得分:0)
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)
答案 2 :(得分:0)
os.path.abspath()
没有按照您的想法行事。它或多或少只是将getcwd()
的结果预先添加到您传递的字符串中,它对该文件的实际位置一无所知。因此,当您的循环到达子目录中的名称时,abspath()
是错误的,因为当前目录仍然是上面的级别。
您可以从os.walk
的输出中获取正确的目录名称,请参阅文档here。