![](/img/trans.png)
[英]os.listdir print more files than command `ls` but less than `ls -a`
[英]which command is better: os.listdir() or os.system('ls') and WHY?
在当前工作目录中:
import os
print( os.listdir() )
将列出文件和目录。 但是,我也可以使用system
命令获取 Linux 机器当前工作目录中的文件和目录列表:
import os
print( os.system('ls') )
哪个命令更好: os.listdir()
或os.system('ls')
,为什么?
os.listdir()
是在 python 中本地实现的,并且可以在任何编译 python 的操作系统上运行。
调用os.system('ls')
依赖于底层操作系统有一个ls
命令,这是一个疯狂的假设(例如,windows 怎么样?),并且需要这个可执行文件在$PATH
。 从性能的角度来看,您将执行另一个完全多余的进程。 如果你想做任何比打印结果更有趣的事情,你将不得不自己解析输出。
长话短说 - 不要重新发明轮子。 如果 python 给你一个内置的os.listdir()
,就使用它。
我可能在这里挖坟,但我最近遇到了类似的用法。
我试图ls
一个/path/to/temp
文件。 它不起作用,在我关闭它之前ls
命令会卡住并且没有响应超过 5 分钟。 注意这是通过腻子通过 SSH,我试过ls -l | wc -l
ls -l | wc -l
,这也不起作用。
len(os.listdir("path/to/temp"))
立即返回一个数字,大约是75000
,该列表几乎立即构建。 因此,如果您在具有大量后代的目录上使用os.listdir()
与 ls ,则有明显的速度优势。
只是为了堆积: ls
对您尝试使用它的目录中的文件数量有一个开销限制。 os.listdir()
没有这样的限制。 如果你可以使用它,那么os.listdir()
似乎是更好的选择。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.