13

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

建议非常感谢。

干杯,R

4

2 回答 2

17

这有什么问题?

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

检查文档以run()获取更多技巧。

于 2011-07-09T02:18:57.477 回答
8

我认为最好的方法是编写一个 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()
于 2012-02-03T12:03:45.997 回答