Python Fabric:如何检索目录的文件列表

时间:2011-07-08 17:42:46

标签: python file fabric dir filelist

我正在使用python-fabric库构建远程服务器管理工​​具,并且正在寻找一种检索远程服务器上目录的文件列表的好方法。目前我正在使用run(“ls dir”)并且手动拆分返回字符串,这看起来很可怕并且非常依赖于体系结构。 fabric.contrib.files似乎不包含任何使用..

建议非常感谢。

干杯, [R

2 个答案:

答案 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()