繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM