以递归方式获取所有文件的列表(使用绝对路径)以及使用Python获取其uid

时间:2018-02-15 15:19:01

标签: python list file absolute-path uid

我正在尝试编写一个python脚本,以递归方式列出给定目录中具有绝对路径的所有文件,并在它们前面列出它们的UID和文件所有者。 (类似于:ls -lR) 我写了这个,但它在执行结束时给了我一个错误:

aggregate

3 个答案:

答案 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