какая команда лучше: os.listdir () или os.system ('ls') и ПОЧЕМУ? - PullRequest
0 голосов
/ 04 июля 2018

В текущем рабочем каталоге:

import os
print( os.listdir() )

выведет список файлов и каталогов. Тем не менее, я также мог бы получить список файлов и каталогов в текущем рабочем каталоге машины Linux, используя команду system:

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

Какая команда лучше: os.listdir() или os.system('ls') и почему?

Ответы [ 2 ]

0 голосов
/ 15 января 2019

Я, возможно, копаю могилы здесь, но недавно я столкнулся с подобным использованием.

Я пытался ls /path/to/temp файл. Это не сработало, команда ls зависала и не отвечала более 5 минут, прежде чем я ее выключал. обратите внимание, что это было через SSH через шпаклевку, я попробовал ls -l | wc -l, который тоже не работал.

len(os.listdir("path/to/temp")) немедленно вернул число, и оно было около 75000, список был составлен почти сразу. Таким образом, существует явное преимущество в скорости, если вы используете os.listdir() vs ls в каталоге с большим количеством потомков.

0 голосов
/ 04 июля 2018

os.listdir() изначально реализовано на python и будет работать в любой операционной системе, в которой скомпилирован python.

Вызов os.system('ls') зависит от базовой операционной системы, имеющей команду ls, что является диким предположением (например, как насчет окон?), И требует, чтобы этот исполняемый файл был в $PATH. С точки зрения производительности вы выполняете другой процесс, который полностью избыточен. И если вы хотите сделать что-нибудь более хитрое, чем просто распечатать результат, вам придется возиться с парсингом вывода самостоятельно.

Короче говоря, не изобретайте велосипед. Если python дает вам встроенный os.listdir(), просто используйте его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...