【问题标题】:Files and directories in Python on linuxLinux 上 Python 中的文件和目录
【发布时间】:2012-03-17 18:17:47
【问题描述】:

我正在寻找一个 python 代码,它允许我获取一个目录并创建一个类似于“ls -lR”的列表,其中包含目录中的所有文件。和子目录。以表格形式显示其名称、大小、上次修改日期、权限、用户等。

还有目录和子目录中所有文件的总大小。

到目前为止,我已经使用了时间、大小和权限的统计信息,并将其附加到我制作表格的列表中。但是要找到文件名、perm、所有者和组。如果我能得到一个更简洁的代码?

【问题讨论】:

  • 你现在到底在做什么? os.walk() + os.stat()?
  • os.listdir(".") 也可能有帮助。
  • 我正在寻找一种递归方法,它允许我以表格格式存储文件规范。

标签: python linux file list directory


【解决方案1】:

要递归遍历文件,可以使用os.walk。这会让你知道你需要的所有文件名。

获得文件名后,您可以继续使用os.stat 来获取用户和组ID。关于权限,我觉得没有办法直接使用标准库获取,但是可以使用os.access来一一测试权限,看看设置了哪些。

【讨论】:

  • 我需要说的是,我能够读取所有文件,然后我应该能够将它们存储为表格格式,其中不同的列分别指定文件属性。
  • 问题是,我不知道在这个上使用递归
  • 要以表格格式存储,您可以使用标准库中的csv module。关于递归,您不必担心,因为 os.walk 会为您完成。
【解决方案2】:

如果您使用的是 python 2.x,您可以使用:

commands.getoutput("ls –lR") 

对于 python 3.0 你可以试试:

subprocess.check_output("ls -lR")

希望对你有帮助!

编辑

Commands.getoutput 和 subprocess.check_output 将返回您用作参数的命令的输出。

例如:

lslr = commands.getoutput("ls –lR") 
print lslr

这将为您提供与当前目录中的 ls -lR 完全相同的输出。然后由您决定从那里过滤您需要的任何内容!

要更改当前目录,请使用 os.chdir(/desired/dir)。

【讨论】:

  • 这个我直接在终端中使用,但我想要一个 .py 文件
【解决方案3】:

您可以在 jcollado 提到的带有 os.stat 的目录中遍历,如果您想使用搜索模式进行搜索,请在该目录中使用 glob

【讨论】:

    【解决方案4】:
    import os
    
    
    def iterbrowse(path):
        for home, dirs, files in os.walk(path):
            for filename in files:
                yield os.path.join(home, filename)
    
    
    for full_name in iterbrowse("/root"):
        print full_name
    

    【讨论】:

    • 虽然这可能会回答问题,但也请添加简短说明您的代码做了什么以及为什么它解决了最初的问题。
    猜你喜欢
    • 2011-12-08
    • 2017-11-03
    • 2012-01-04
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 2021-08-25
    • 2018-03-20
    • 1970-01-01
    相关资源
    最近更新 更多