【问题标题】:How to get contents of a given "path" using 'ls -l' command and Python如何使用“ls -l”命令和 Python 获取给定“路径”的内容
【发布时间】:2020-05-03 19:41:51
【问题描述】:

我正在使用 python,我想获取给定路径中所有文件/目录(非嵌套)的列表。这意味着我需要使用 python 输出完全等效的“ls -l”命令。

例如在路径 /opt/test/ ls -l 输出如下所示。

-rw-r--r--  1 user  qa-others  16715 Jan 16 13:38 file_2001161337
-rw-r--r--  1 user  qa-others  16715 Jan 16 13:46 file_2001161346
-rw-r--r--  1 user  qa-others  16715 Jan 16 13:54 file_2001161353

我的python代码如下所示。

print(subprocess.check_output(['ls', '-l']))

如何传递路径值,即“/opt/temp”并获得与上图相同的“ls -l”放置?

【问题讨论】:

标签: python subprocess ls


【解决方案1】:

使用os.listdir 会好得多,这基本上正是你想要的。

如果您需要有关这些文件夹的其他信息,您也可以使用os.scandir,但您需要进行过滤以确保您只选择文件夹:

[e for e in os.scandir() if e.isdir]

如果您想显式指定这些函数,每个函数都需要一个路径参数,否则它们在当前目录上运行。

【讨论】:

    【解决方案2】:

    您可以为此使用pathlib.Path() (Python >=3.4):

    from pathlib import Path
    
    source = Path('/opt/temp')
    
    # Get all children
    content = source.glob('*')
    

    默认情况下,这将返回 pathlib.Path 对象的迭代器(如果您需要视觉检查,请将迭代器转换为列表)。 然后您可以使用pahtlib.Path.stat() 以编程方式访问文件属性。

    【讨论】:

      猜你喜欢
      • 2021-12-04
      • 1970-01-01
      • 2019-04-17
      • 2020-07-15
      • 2011-01-15
      • 1970-01-01
      • 2016-11-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多