哪个命令更好:os.listdir()或os.system('ls')和为什么?

时间:2018-07-03 21:38:06

标签: python directory

在当前工作目录中:

import os
print( os.listdir() )

将列出文件和目录。但是,我也可以使用system命令在Linux计算机的当前工作目录中获取文件和目录的列表:

import os
print( os.system('ls') )

哪个命令更好:os.listdir()os.system('ls'),为什么?

2 个答案:

答案 0 :(得分:1)

os.listdir()在python中本地实现,并且可以在python编译所在的任何操作系统上使用。

调用os.system('ls')依赖于底层操作系统来拥有ls命令,这是一个疯狂的假设(例如,关于Windows呢?),并且要求此可执行文件位于{{1 }}。从性能的角度来看,您将执行另一个过程,这完全是多余的。而且,如果您想做的比打印结果更出色,那么您就不得不自己解析输出。

长话短说-不要重新发明轮子。如果python为您提供了内置$PATH,请使用它。

答案 1 :(得分:0)

我也许在这里挖坟墓,但是最近我遇到了类似的用法。

我尝试ls一个/path/to/temp文件。它无法正常工作,在关闭之前,ls命令被卡住且无响应超过5分钟。注意,这是通过腻子通过SSH进行的,我尝试了ls -l | wc -l,但该方法也不起作用。

len(os.listdir("path/to/temp"))立即返回一个数字,大约在75000附近,该列表几乎立即被构建。因此,如果在具有大量后代的目录上使用os.listdir() vs ls,则有明显的速度优势。