我正在学习 python 并且遇到了一些我无法弄清楚如何去做的问题。为了简单起见,假设我有 2 个脚本:Main 和 CalledScript。我希望 Main 打开一个可执行文件并获取它的 pid,将其分配给一个变量,然后将 CalledScript.py 作为子进程打开并将该变量作为参数传递给它。虽然我知道在大多数情况下使用导入会是更好的选择,但在我的情况下,由于项目的其他部分,我必须将其作为子进程运行。无论如何,当我这样做时,我不断收到错误消息。它仅在我尝试发送 pid 时发生。如果我将下面的变量“thePid”分配给像“555”这样的随机数,它会工作得很好。CalledScript 会收到它,将它打印到屏幕上,一切都很好。但是尝试分配它 cproc.pid 并发送它并没有很好地完成。
事不宜迟,下面是一个简单的示例代码:
主文件
from subprocess import Popen, PIPE
import sys
import subprocess
import os
cproc = Popen("C:\Test\Test.exe", stdin=PIPE, stdout=PIPE)
thePid = cproc.pid
theproc = subprocess.Popen(['C:\\CalledScript.py', thePid], shell=True)
调用脚本.py
import sys
print "thePid is: %r" % sys.argv[1]
我得到的错误:
Traceback (most recent call last):
File "main.py", line 12, in <module>
theproc = subprocess.Popen(['C:\\CalledScript.py
', cproc.pid], shell=True)
File "C:\Python27\lib\subprocess.py", line 679, in __init__
errread, errwrite)
File "C:\Python27\lib\subprocess.py", line 852, in _execute_child
args = list2cmdline(args)
File "C:\Python27\lib\subprocess.py", line 587, in list2cmdline
needquote = (" " in arg) or ("\t" in arg) or not arg
TypeError: argument of type 'int' is not iterable
任何帮助都会非常出色!对于可能非常明显的问题,我们深表歉意。我在谷歌上四处搜索,但没有找到答案!前几天我刚开始玩python,所以我还在学习!