![](/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.