Ответ 1
Что случилось с этим?
output = run('ls /path/to/files')
files = output.split()
print files
Проверьте документацию на run()
для получения дополнительных трюков.
Я создаю инструмент администрирования удаленного сервера, используя библиотеку python-fabric, и я ищу хороший способ получить список файлов для каталога на удаленном сервере. В настоящее время я использую run ( "ls dir" ) и вручную разбиваю возвращаемую строку, что кажется ужасным и очень зависимым от архитектуры. fabric.contrib.files, похоже, не содержит ничего полезного.
Предложения высоко оценены.
Cheers, R
Что случилось с этим?
output = run('ls /path/to/files')
files = output.split()
print files
Проверьте документацию на run()
для получения дополнительных трюков.
Я думаю, что лучший способ - написать 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()