Python Fabric:如何获取目录的文件列表
我正在用python-fabric库开发一个远程服务器管理工具,想要找到一个好的方法来获取远程服务器上某个目录的文件列表。目前我使用的是run("ls dir")命令,然后手动分割返回的字符串,这样做感觉非常糟糕,而且依赖于具体的系统架构。fabric.contrib.files似乎也没有什么有用的东西……
非常感谢大家的建议。
谢谢,
R
2 个回答
8
我觉得最好的办法是写一个BASH(其他的命令行工具也差不多)的一行命令,来获取一个文件夹里的文件列表。
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()
17
这段代码有什么问题呢?
output = run('ls /path/to/files')
files = output.split()
print files
可以查看关于run()
的文档,里面有更多的技巧。