在搜索和一些测试运行之后,os.popen()+ read()和subprocess.check_output()似乎几乎等同于读出文件夹的内容。有没有办法改进os.popen()+ read()或subprocess.check_output()的组合?我必须ls
许多文件夹并读取输出,并且使用上述任何一种都是类似的,但根据分析结果表示主要瓶颈。
答案 0 :(得分:5)
您正在寻找os.listdir和/或os.walk,也许还有os.stat系列功能。这些是(Python绑定)ls
使用它们的相同基元,所以你可以通过解析ls
的输出来做这些事情。我建议您仔细阅读os,os.path和stat模块提供的所有内容;可能还有其他事情你不需要外部程序来做。
你可能还应该阅读stat
, the underlying system call的文档 - 它是面向C的,但它会帮助你理解os.stat
的作用。
答案 1 :(得分:2)
为什么不直接用os.listdir
阅读目录内容?你为什么需要炮轰ls
?如果除了文件名之外还需要有关文件的更多信息,还可以使用os.stat
。自己进行系统调用比创建子进程更有效率。
对于完全目录遍历,有os.walk
。 shutil
module也有一些有用的功能。
答案 2 :(得分:0)
使用glob:
>>> from glob import glob
>>> glob('*')
语法相同。
e.g。
glob('*.txt') # the same as "ls *.txt"