subprocess.Popen()得到OSError:[Errno 7]在Linux Mint中运行代码时参数列表太长

时间:2018-05-01 05:01:01

标签: python python-3.x

我有一段代码:

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))

,已达到相同的错误。

命令非常简短,我不知道为什么会出现这个错误。

我已经谷歌数百个结果,但我无法解决我的问题。

2 个答案:

答案 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")

如果它不起作用,请告诉我