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