python-fabric ライブラリを使用してリモート サーバー管理ツールを構築しており、リモート サーバー上のディレクトリのファイルリストを取得する良い方法を探しています。現在、私は run("ls dir") を使用しており、戻り文字列を手動で分割していますが、これは恐ろしく、アーキテクチャに大きく依存しているようです。fabric.contrib.files には何の役にも立たないようです..
提案は大歓迎です。
乾杯、R
これの何が問題になっていますか?
output = run('ls /path/to/files')
files = output.split()
print files
その他のトリックについては、のドキュメントをrun()
確認してください。
最善の方法は、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()