17

物事を適切に行う方法についてのヒントが必要です。

名前のリストを引数 ["name1"、"name2" など] として使用する script.py というスクリプトがあるとします。

subprocess モジュールを使用して、このスクリプトを別のスクリプトから呼び出したいと考えています。だから私がやりたいことは次のとおりです:

myList = ["name1", "name2", "name3"]
subprocess.Popen(["python", "script.py", myList])

もちろん、subprocess.Popen メソッドは文字列のリストを引数として必要とするため、これは機能しません。だから私は次のことを考えました:

subprocess.Popen(["python", "script.py", str(myList)])

これでプロセスが開始されますが、リストではなく文字列が引数として含まれているため、機能しません。どうすればそれを適切に修正できますか?

4

2 に答える 2

37

演算子を使用してそれらを連結します+

myList = ["name1", "name2", "name3"]
subprocess.Popen(["python", "script.py"] + myList)

ところで、同じ python プログラムを使用する場合は、に置き換え"python"ますsys.executable

于 2013-10-30T13:36:24.080 に答える
3

falsetru さん、素早い回答ありがとうございます。直接は機能しませんが、その方法は理解しています。あなたの提案は、次のことと同等です:

subprocess.Popen(["Python","script.py","name1","name2","name3"])

元のリストに含まれる文字列である 3 つの引数があります。

script.py ファイルで行う必要があるのは、次のようにして、受け取った各引数から新しいリストを作成することだけです。

myList = sys.argv[1:]

myList は、最初に持っていたものと同じになりました!

["name1","name2","name3"]

なんでもっと早く考えなかったのかわからない!

于 2013-10-30T13:52:13.627 に答える