2012-02-28 56 views
4

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

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

我已经使用了截至目前为止的时间,大小和权限的统计数据,并在我制作了表格的列表中添加了相同的数据。但要找到文件名称,烫发,所有者和组。如果我能得到一个整洁的代码?

+1

你现在在做什么? 'os.walk()'+'os.stat()'? – 2012-02-28 09:26:32

+0

os.listdir(“。”)也可能有帮助。 – 01100110 2012-02-29 00:59:02

+0

我正在寻找递归方法,它允许我以表格格式存储文件规范。 – simplycurious 2012-02-29 07:52:34

回答

3

如果您正在使用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在你的当前目录。然后,由您自行决定是否需要过滤所需的任何内容!

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

+0

这个我在终端直接使用,但我想要一个.py文件 – simplycurious 2012-02-29 07:49:53

+0

只需在py文件中添加这个!我更新了我的答案! – caiocpricci2 2012-02-29 13:46:28

5

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

一旦你有文件名,你可以继续使用os.stat获得用户和组ID。关于权限,我认为没有办法让他们直接使用标准库,但是您可以使用os.access逐一测试权限以找出设置的权限。

+0

我需要的是可以说,我能够读取所有文件,然后我应该能够将它们存储在表格格式中,每列指定文件属性。 – simplycurious 2012-02-29 07:51:16

+0

的事情是,我不知道用递归这个 – simplycurious 2012-02-29 07:51:34

+1

要存储在一个表格格式,您可以使用['csv'模块(http://docs.python.org/library/csv.html)来自标准库。关于递归,你不必担心,因为'os.walk'会为你做。 – jcollado 2012-02-29 20:05:43

1

您可以通过jcollado与os.stat如上面所提到的目录遍历,如果你想使用搜索模式搜索,然后在该目录中使用glob

0
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 
+0

尽管这可能会回答这个问题,但也请添加一个简短的说明,说明您的代码的作用以及为什么它解决了最初的问题。 – user1438038 2017-08-10 07:08:32

相关问题