2012-02-28 2 views
4

Я ищу код в python, который позволяет мне взять каталог и создать список, похожий на «ls -lR», содержащий все файлы в каталоге. и sub-dir. в табличной форме с указанием их имен, размера, даты последнего изменения, разрешений, пользователей и т. д.Файлы и каталоги в Python on linux

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

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

+1

Что вы сейчас делаете прямо сейчас? 'os.walk()' + 'os.stat()'? –

+0

os.listdir (".") Тоже может помочь. – 01100110

+0

Я искал рекурсивный метод, который позволяет мне хранить спецификации файлов в табличном формате. – simplycurious

ответ

3

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

commands.getoutput("ls –lR") 

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

subprocess.check_output("ls -lR") 

Надеется, что это помогает!

EDIT

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

Ex:

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

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

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

+0

это я использую в терминале напрямую, но я хочу его в .py-файле – simplycurious

+0

Просто добавьте это в файл py! Я обновил свой ответ! – caiocpricci2

5

Чтобы рекурсивно перемещать файлы, вы можете использовать os.walk. Это позволит вам узнать все имена файлов, которые вам нужны.

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

+0

что мне нужно, скажем, я могу прочитать все файлы, тогда я должен иметь возможность хранить их в виде таблиц с разными столбцами, каждый из которых определяет свойства файлов. – simplycurious

+0

Дело в том, что я не знаю, как использовать рекурсию на этом – simplycurious

+1

Чтобы сохранить в табличном формате, вы можете использовать модуль '' csv' '(http://docs.python.org/library/csv.html) из стандартной библиотеки. Что касается рекурсии, вам не нужно беспокоиться об этом, так как 'os.walk' сделает это за вас. – jcollado

1

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

0
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 
+0

Хотя это может ответить на вопрос, пожалуйста, также добавьте краткое объяснение, что делает ваш код и почему оно решает начальную проблему. – user1438038

Смежные вопросы