私は物事を適切に行う方法についてのヒントが必要です。
名前のリストを引数として使用するscript.pyというスクリプトがあるとします["name1"、 "name2"など]。
サブプロセスモジュールを使用して、別のスクリプトからこのスクリプトを呼び出したいと思います。だから私がやりたいのは次のとおりです:
myList = ["name1", "name2", "name3"]
subprocess.Popen(["python", "script.py", myList])
もちろん、subprocess.Popenメソッドは引数として文字列のリストを必要とするため、これは機能しません。だから私は次のことをすることを考えました:
subprocess.Popen(["python", "script.py", str(myList)])
これでプロセスが開始されますが、引数として文字列があり、リストがないため、機能しません。どうすれば適切に修正できますか?
+
演算子を使用してそれらを連結します。
myList = ["name1", "name2", "name3"]
subprocess.Popen(["python", "script.py"] + myList)
ところで、同じpythonプログラムを使用したい場合は、"python"
をsys.executable
に置き換えてください。
クイックアンサーfalsetruをありがとう。直接は機能しませんが、その方法は理解しています。あなたの提案は行うことと同等です:
subprocess.Popen(["Python","script.py","name1","name2","name3"])
元のリストに含まれている文字列である3つの引数があります。
Script.pyファイルで行う必要があるのは、次の手順を実行して、受け取った各引数から新しいリストを作成することだけです。
myList = sys.argv[1:]
myListは、最初に持っていたものと同じになりました。
["name1","name2","name3"]
なぜ私が以前にそれについて考えなかったのかわからない!