我有一段代码:
temp_dir = "/tmp/working"
p = subprocess.Popen(["python3", temp_dir + "/tmp.py"])
但是当我在Linux Mint 18的bash中运行代码时,我得到了OSError: [Errno 7] Argument list too long
。但是当我在Fedora,macOS,FreeBSD,Ubuntu中测试时(他们有很多shell:fish,zsh,...)我没有收到任何错误。即便我使用
print(subprocess.check_call(["python3", temp_dir + "/tmp.py"], shell=True))
,已达到相同的错误。
命令非常简短,我不知道为什么会出现这个错误。
我已经谷歌数百个结果,但我无法解决我的问题。
答案 0 :(得分:0)
当你传递shell=True
时,check_call
期望参数作为一个命令,就像在终端中运行命令一样。试试这个。希望会奏效。
print(subprocess.check_call(["python3 "+ temp_dir + "/tmp.py"], shell=True))
答案 1 :(得分:0)
为什么不试试这两个,看看它们是否有效
temp_dir = "/tmp/working"
p = subprocess.call("python3 " + temp_dir + "/tmp.py", shell=True)
如果这不起作用,您也可以尝试
import os
command = "python3 " + temp_dir + "/tmp.py"
p = os.popen(command ,"r")
如果它不起作用,请告诉我