我正在使用python-fabric库构建远程服务器管理工具,并且正在寻找一种检索远程服务器上目录的文件列表的好方法。目前我正在使用run(“ls dir”)并且手动拆分返回字符串,这看起来很可怕并且非常依赖于体系结构。 fabric.contrib.files似乎不包含任何使用..
建议非常感谢。
干杯, [R
答案 0 :(得分:17)
这有什么问题?
output = run('ls /path/to/files')
files = output.split()
print files
检查documentation on run()
以获取更多技巧。
答案 1 :(得分:7)
我认为最好的方法是编写一个BASH(其他shell表现相似)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()