Python Popen:如何将列表作为参数传递

Python Popen:如何将列表作为参数传递,python,subprocess,popen,Python,Subprocess,Popen,我只需要一个如何正确做事的提示 假设我有一个名为script.py的脚本,它使用名称列表作为参数[“name1”、“name2”等] 我想使用子流程模块从另一个脚本调用此脚本。因此,我想做以下几点: myList = ["name1", "name2", "name3"] subprocess.Popen(["python", "script.py", myList]) subprocess.Popen(["python", "script.py", str(myList)]) myList

我只需要一个如何正确做事的提示

假设我有一个名为script.py的脚本,它使用名称列表作为参数[“name1”、“name2”等]

我想使用子流程模块从另一个脚本调用此脚本。因此,我想做以下几点:

myList = ["name1", "name2", "name3"]
subprocess.Popen(["python", "script.py", myList])
subprocess.Popen(["python", "script.py", str(myList)])
myList = sys.argv[1:]
当然,这不起作用,因为subprocess.Popen方法需要字符串列表作为参数。 因此,我考虑采取以下措施:

myList = ["name1", "name2", "name3"]
subprocess.Popen(["python", "script.py", myList])
subprocess.Popen(["python", "script.py", str(myList)])
myList = sys.argv[1:]

现在进程开始了,但它不工作,因为它有一个字符串作为参数,而不是一个列表。我应该如何正确地修复它

使用
+
运算符连接它们

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

顺便说一句,如果您想使用相同的python程序,请将
“python”
替换为
sys.executable

谢谢您的快速回答。它不能直接工作,但我知道怎么做。 你的建议相当于做:

subprocess.Popen(["Python","script.py","name1","name2","name3"])
其中我有3个参数,它们是原始列表中包含的字符串

在script.py文件中,我需要做的就是通过执行以下操作,从接收到的每个参数构建一个新列表:

myList = ["name1", "name2", "name3"]
subprocess.Popen(["python", "script.py", myList])
subprocess.Popen(["python", "script.py", str(myList)])
myList = sys.argv[1:]
我的列表现在与我最初的列表相同

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

不知道为什么我没早点想到

.extend()
如果您不确定附加参数的类型,则可以使用它。@NiklasR或
+list(myList)
extend
仅当您在调用之前修改命名列表时才有用
subprocess.Popen([“python”,“script.py”].extend(myList))
将传递
None
extend
)的返回值)作为
Popen()
@falsetru的第一个也是唯一的参数,我们可以将一个新参数(就像传递给函数一样)从上一个进程传递到新的子进程吗?@user5319825,是的,正如您在答案中的代码中所看到的。子进程可以使用接收这些命令行参数。对我来说,最好的方法是使用
extend
将更多元素添加到列表中。
extend
很方便,因为在调用
subprocess.Popen()