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 (他のシェルも同様に動作する) ワンライナーを作成することだと思います。ディレクトリ内のファイルのリストを取得します。

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 に答える