Файлы и каталоги в Python на Linux - PullRequest
4 голосов
/ 28 февраля 2012

Я ищу код на python, который позволяет мне взять каталог и создать список, похожий на «ls –lR», содержащий все файлы в директории. и поддиректория. в табличной форме с указанием их имен, размера, даты последнего изменения, прав доступа, пользователей и т. д.

А также общий размер всех файлов в каталогах и подкаталогах.

Я использовал статистику на данный момент, для времени, размера и разрешений и добавил то же самое в списки, из которых я сделал таблицы. Но чтобы найти имя файла, Пермь, владелец и группу. Если бы я мог получить более аккуратный код?

Ответы [ 4 ]

5 голосов
/ 28 февраля 2012

Для рекурсивного обхода файлов вы можете использовать os.walk.Это позволит вам узнать все имена файлов, которые вам нужны.

Получив имена файлов, вы можете продолжать использовать os.stat для получения идентификаторов пользователей и групп.Что касается разрешений, я думаю, что нет никакого способа получить их напрямую, используя стандартную библиотеку, но вы можете использовать os.access, чтобы проверить разрешения по одному, чтобы выяснить, какие из них установлены.

3 голосов
/ 28 февраля 2012

Если вы используете Python 2.x, вы можете использовать:

commands.getoutput("ls –lR") 

для Python 3.0 вы можете попробовать:

subprocess.check_output("ls -lR")

Надеюсь, это поможет!

EDIT

Commands.getoutput и subprocess.check_output возвращают выходные данные команды, которую вы использовали в качестве параметра.

Пример:

lslr = commands.getoutput("ls –lR") 
print lslr

Это даст вам точно такой же вывод, что и ls -lR в вашем текущем каталоге. Тогда вам решать отфильтровать все, что вам нужно оттуда!

Чтобы изменить текущий каталог, используйте os.chdir (/ требуемый / каталог).

1 голос
/ 28 февраля 2012

Вы можете перемещаться по каталогу с помощью os.stat, как упомянуто jcollado, и если вы хотите использовать шаблон поиска для поиска, используйте glob в этом каталоге.

0 голосов
/ 10 августа 2017
import os


def iterbrowse(path):
    for home, dirs, files in os.walk(path):
        for filename in files:
            yield os.path.join(home, filename)


for full_name in iterbrowse("/root"):
    print full_name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...