2016-02-15 2 views
2

У меня есть следующие команды я бегу на моем удаленном сервереPython - список всех каталогов/файлов и следовать

python -c 'import os, json; print json.dumps(os.listdir("."))'

Это прекрасно работает для перечисления файлов/каталогов в текущем каталоге, однако, как бы я изменить это, чтобы следовать каталогам и перечислить содержащиеся файлы?

+4

Кажется, вам нужно что-то вроде этого: http://stackoverflow.com/a/16974952/2707359 – Ilya

+0

@ Илья думал о том же, хотя с некоторым серьезным гнездом перебирать os.walk, а затем перебирать через oswwalks имена файлов, чтобы сделать его одним лайнером. – David

+0

Это не должен быть один лайнер, я могу сохранить его в .py-файл и выполнить, если потребуется. – user3662307

ответ

3

Python, всегда жаждущий, предоставляет для этого стандартную библиотечную функцию. os.walk завершает шаблон рекурсивно перечисляющих файлов в подкаталогах.

Вот как вы могли бы json-ify просмотреть список всех файлов в этом каталоге или в любых подкаталогах. Я использую два уровня list comprehension для конкатенации списков файлов:

import json 
import os 

print(json.dumps([file for root, dirs, files in os.walk('.') for file in files])) 
0
out_list = [] 
for (path, dirs, files) in os.walk("."): 
    for f in files: 
     out_list.append(os.path.join(path, f)) 
    for d in dirs: 
     out_list.append(os.path.join(path, d)) 

print json.dumps(out_list) 

Это будет включать в себя каталоги и файлы в выводе с полным путем.

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