Ткань Python: как получить список файлов каталога

Я создаю инструмент администрирования удаленного сервера, используя библиотеку python-fabric, и я ищу хороший способ получить список файлов для каталога на удаленном сервере. В настоящее время я использую run ( "ls dir" ) и вручную разбиваю возвращаемую строку, что кажется ужасным и очень зависимым от архитектуры. fabric.contrib.files, похоже, не содержит ничего полезного.

Предложения высоко оценены.

Cheers, R

Ответ 1

Что случилось с этим?

output = run('ls /path/to/files')
files = output.split()
print files

Проверьте документацию на run() для получения дополнительных трюков.

Ответ 2

Я думаю, что лучший способ - написать BASH (другие оболочки похожи на аналогичные) oneliner. Чтобы получить список файлов в каталоге.

for i in *; do echo $i; done

Итак, полное решение, которое возвращает абсолютные пути:

from fabric.api import env, run, cd

env.hosts = ["localhost"]
def list_dir(dir_=None):
    """returns a list of files in a directory (dir_) as absolute paths"""
    dir_ = dir_ or env.cwd
    string_ = run("for i in %s*; do echo $i; done" % dir_)
    files = string_.replace("\r","").split("\n")
    print files
    return files

def your_function():
    """docstring"""
    with cd("/home/"):
        list_dir()