14

テキストファイルをスキャンしてサブプロセスに引数を渡すプログラムを作成しようとしています。パスにスペースが含まれるディレクトリを取得するまで、すべてが正常に機能します。

引数を分解する私のsplitメソッドは、スペースをつまずきます。

s = "svn move folder/hello\ world anotherfolder/hello\ world"

task = s.split(" ")
process = subprocess.check_call(task, shell = False)

正しい引数を解析する関数が必要か、文字列全体を最初に分解せずにサブプロセスに渡します。

でも少し迷っています。

4

1 に答える 1

21

代わりにリストを使用してください。

task = ["svn",  "move",  "folder/hello world", "anotherfolder/hello world"]
subprocess.check_call(task)

ファイルにパスだけでなくコマンド全体が含まれている場合は、shlex.split()を試すことができます。

task = shlex.split(s)
subprocess.check_call(task)
于 2012-08-07T12:44:29.113 に答える