Python 子进程返回异常
Python subprocess returning exception
我有以下代码直到最近才有效:
si = STARTUPINFO()
si.dwFlags |= STARTF_USESHOWWINDOW
env = environ
self.popen = Popen('python', [path + '\opt_module_v3.py'] + vlist, stdout=PIPE, stderr=STDOUT, stdin=PIPE, universal_newlines=True, bufsize=1, startupinfo=si, env=env)
lines_iterator = iter(self.popen.stdout.readline, b"")
它调用 opt_module_v3.py 和 returns 消息作为子进程 运行。
当我 运行 主代码时,出现以下异常:
self.popen = Popen('python', [path + '\opt_module_v3.py'] + vlist, stdout=PIPE,
stderr=STDOUT, stdin=PIPE, universal_newlines=True, bufsize=1, startupinfo=si, env=env)
File "C:\ProgramData\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py",
line 108, in __init__
super(SubprocessPopen, self).__init__(*args, **kwargs)
TypeError: __init__() got multiple values for argument 'bufsize'
就像我提到的那样,这段代码以前是有效的,但我可能已经塞满了,因为我一直在努力改进。
关于这里可能发生的事情的任何线索?
文档说 API 是:
subprocess.Popen(args, bufsize=- 1, MORE_ARGS...)
这意味着您的命令必须放在列表中。
在您的代码中 [path + '\opt_module_v3.py'] + vlist
被解释为 bufsize
而不是
self.popen = Popen('python', [path + '\opt_module_v3.py'] + vlist, stdout=PIPE, stderr=STDOUT, stdin=PIPE, universal_newlines=True, bufsize=1, startupinfo=si, env=env)
你应该使用像
这样的东西
self.popen = Popen(['python', [path + '\opt_module_v3.py'] + vlist], stdout=PIPE, stderr=STDOUT, stdin=PIPE, universal_newlines=True, bufsize=1, startupinfo=si, env=env)
不过我认为您可能还需要将您的路径连接到一个字符串才能使这项工作正常进行
我有以下代码直到最近才有效:
si = STARTUPINFO()
si.dwFlags |= STARTF_USESHOWWINDOW
env = environ
self.popen = Popen('python', [path + '\opt_module_v3.py'] + vlist, stdout=PIPE, stderr=STDOUT, stdin=PIPE, universal_newlines=True, bufsize=1, startupinfo=si, env=env)
lines_iterator = iter(self.popen.stdout.readline, b"")
它调用 opt_module_v3.py 和 returns 消息作为子进程 运行。 当我 运行 主代码时,出现以下异常:
self.popen = Popen('python', [path + '\opt_module_v3.py'] + vlist, stdout=PIPE,
stderr=STDOUT, stdin=PIPE, universal_newlines=True, bufsize=1, startupinfo=si, env=env)
File "C:\ProgramData\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py",
line 108, in __init__
super(SubprocessPopen, self).__init__(*args, **kwargs)
TypeError: __init__() got multiple values for argument 'bufsize'
就像我提到的那样,这段代码以前是有效的,但我可能已经塞满了,因为我一直在努力改进。 关于这里可能发生的事情的任何线索?
文档说 API 是:
subprocess.Popen(args, bufsize=- 1, MORE_ARGS...)
这意味着您的命令必须放在列表中。
在您的代码中 [path + '\opt_module_v3.py'] + vlist
被解释为 bufsize
而不是
self.popen = Popen('python', [path + '\opt_module_v3.py'] + vlist, stdout=PIPE, stderr=STDOUT, stdin=PIPE, universal_newlines=True, bufsize=1, startupinfo=si, env=env)
你应该使用像
这样的东西self.popen = Popen(['python', [path + '\opt_module_v3.py'] + vlist], stdout=PIPE, stderr=STDOUT, stdin=PIPE, universal_newlines=True, bufsize=1, startupinfo=si, env=env)
不过我认为您可能还需要将您的路径连接到一个字符串才能使这项工作正常进行