Python 长列表目录 (ls -l), ls *

bru*_*ard 5 python shell

我正在尝试使用ls -lpython 来检查文件的最后修改日期。

os.listdir不显示长列表格式。 subprocess.call显示格式,但实际上打印它,并返回 0。我希望能够将其放入变量中。有任何想法吗 ?

另外,我尝试过

subprocess.call("ls","*.py")
Run Code Online (Sandbox Code Playgroud)

哪个答案

ls: cannot access *.py: No such file or directory
Run Code Online (Sandbox Code Playgroud)

它可以与 一起使用shell=True,但如果有人可以解释为什么没有它它就不起作用,我将不胜感激。如果你知道如何让它发挥作用,那就更好了。

Amb*_*ber 7

如果没有 ,它就无法工作shell=True,因为*是一个 shell 扩展字符 - 从 到*.py以 结尾的文件列表.py是由 shell 本身执行的函数,而不是lspython

如果您想获取通过 调用的命令的输出subprocess,您应该使用subprocess.check_output()subprocess.Popen

ls_output = subprocess.check_output(['ls', '-l'])
Run Code Online (Sandbox Code Playgroud)

  • 当然,更好的方法是根本不调用 ls ,而是使用 os.listdir() 和 os.stat() (或 os.path 和 glob 中的实用函数) ` 模块。) (3认同)