我想使用subprocess.run()以“即发即弃”的方式启动py脚本的其他多个实例,但我无法使其正常工作。它不会产生任何错误,但是process.py永远不会启动(请参见下面的代码)。我不知道发生了什么,还有什么可以尝试的...谢谢!
我要执行的命令是:
(示例):python "S:\Python Scripts\MasterProcess\process.py" --p_id 4 --rerun_override 1
这是我尝试执行上面的命令的方式,它不起作用:
subprocess.run([r'''python''', r'''"S:\Python Scripts\MasterProcess\process.py" --p_id ''' + str(this_p_id) + ''' --rerun_override 1 ''' ], stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
如果我从命令提示符处运行相同的命令(这在Windows服务器上发生,Python 3.7),则运行正常。
如果将批处理文件放在同一目录(S是映射驱动器)中,则可以正常运行:
subprocess.run([r'''S:\Python Scripts\MasterProcess\testrun.bat ''' ], stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
我在批处理文件中添加了一个PAUSE(暂停),希望能看到一些东西(保持窗口打开),但是我什么也没看到。(因为它运行正常。)
答案 0 :(得分:0)
参数必须作为列表而不是字符串传递,正确的语法是: 'python',r“ \\ S \ Python Scripts \ MasterProcess \ process.py”,“-p_id”,str(this_p_id),“-rerun_override”,“ 1”