我尝试使用subprocess.Popen运行多个命令,但我收到了错误。
subprocess.Popen(['C:/cygwin64/Cygwin.bat' && './iv4_console.exe ../embedded/LUA/analysis/verbose-udp-example.lua'], bufsize=0, executable=None,
stdin=None, stdout=None, stderr=None,
preexec_fn=None, close_fds=False,
shell=True, cwd="F:/Master_Copy2/iv_system4/ports/visualC12/Debug", env=None, universal_newlines=False,
startupinfo=None, creationflags=0)
错误说: 不支持的操作数类型&:' str'和' str' 我无法弄清楚问题。
答案 0 :(得分:1)
虽然我不是子进程模块的专家,但我相信你的问题是你在普通python中使用 windows命令行命令连接opertator &&
,它将其解释为{ {1}},按位AND运算符。你应该可以通过替换
&
与
subprocess.Popen(['C:/cygwin64/Cygwin.bat' && './iv4_console.exe
../embedded/LUA/analysis/verbose-udp-example.lua']...
这将subprocess.Popen(['C:/cygwin64/Cygwin.bat' + ' && ' + './iv4_console.exe
../embedded/LUA/analysis/verbose-udp-example.lua']...
替换为字符串&&
,然后将其传递给Windows命令行,然后命令行正确地链接命令。希望这有帮助!
答案 1 :(得分:0)
&安培;是一个二元运算符。如果你试图连接字符串use +而不是。
此外,被调用命令的参数应作为列表的元素传递,而不是在同一个字符串中传递。
答案 2 :(得分:0)
你应该使用&&在字符串里面:
subprocess.Popen(['C:/cygwin64/Cygwin.bat && ./iv4_console.exe ../embedded/LUA/analysis/verbose-udp-example.lua'], bufsize=0, executable=None,
stdin=None, stdout=None, stderr=None,
preexec_fn=None, close_fds=False,
shell=True, cwd="F:/Master_Copy2/iv_system4/ports/visualC12/Debug", env=None, universal_newlines=False,
startupinfo=None, creationflags=0)
&安培;&安培;假设您希望第二个命令仅在第一个命令成功时运行。其他运营商(& ,;等)根据您的要求适用。