Python 子进程Popen无法执行shell脚本

Python 子进程Popen无法执行shell脚本,python,cgi,Python,Cgi,我有下面的python代码,如果我在REPL中执行它,下面的代码可以工作。但是,当我运行脚本时,它甚至没有打开script1.sh shell脚本 import subprocess from subprocess import Popen p = subprocess.Popen(["./script1.sh","-a",param1],stdout=subprocess.PIPE, stderr=subprocess.PIPE) out,err = p.communicate() prin

我有下面的python代码,如果我在REPL中执行它,下面的代码可以工作。但是,当我运行脚本时,它甚至没有打开script1.sh shell脚本

import subprocess
from subprocess import Popen

p = subprocess.Popen(["./script1.sh","-a",param1],stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out,err = p.communicate()
print("Output: ", out)
print("Error: ", err)
它没有任何语法错误,但我在输出中发现了以下差异

运行python脚本时的输出

('Output: ', 'Content-type: text/html; charset=UTF-8;\nExpires: 0;\nLast-Modified: Mon Apr 16 09:11:01 GST 2018\nCache-control: no-store, no-cache, must-revalidate;\n\n')
('Error: ', '')
从REPL运行python代码时的输出

('Output: ', 'Content-type: text/html; charset=UTF-8;\nExpires: 0;\nLast-Modified: Mon Apr 16 05:07:08 GMT 2018\nCache-control: no-store, no-cache, must-revalidate;\n\n**File\x02/path_to_file/generate_file.txt**\n')
('Error: ', '')

如图所示,从REPL执行python脚本时的输出生成文件,但不用于正常的python脚本执行。知道为什么会这样吗?

您可以尝试为shell脚本script1.sh提供绝对路径,对于我们这些不知道的人。。。什么是REPL?@AkshayValsa你是说找不到脚本吗?那么它肯定不会给出像内容类型之类的输出。。。。我看不出绝对路径有什么不同。首字母缩略词代表读取-评估-打印循环。但基本上,当您从命令行输入python时,您可以逐行输入代码并直接处理它。。。这就是我对它的理解…@AkshayValsa我同意tdelaney的观点,这没有任何区别。。。但当在python脚本上尝试使用绝对路径时,它不起作用。但如果我在python命令行上尝试它,它就可以工作