【发布时间】:2019-08-04 06:00:30
【问题描述】:
所以我试图执行一个文件并使用子进程库中可用的 python 内置方法取回返回值。
例如,假设我要执行这个 hello_world python 文件:
def main():
print("in main")
return("hello world!")
if __name__ == '__main__':
main()
我不在乎收回声明in main。我要取回的是返回值hello world!。
我尝试了很多东西,但没有一个奏效。
这是我尝试过的方法及其输出的列表:
args 在所有试验中都很常见:
args = ['python',hello_cmd]
一审:
p1 = subprocess.Popen(args, stdout=subprocess.PIPE)
print(p1.communicate())
print("returncode is:")
print(p1.returncode)
输出是:
(b'in main\n', None)
returncode is:
0
二审:
p2 = subprocess.check_output(args,stderr=subprocess.STDOUT)
print(p2)
输出是:
b'in main\n'
第三次试验:
output, result = subprocess.Popen(args, stdout = subprocess.PIPE, stderr = subprocess.PIPE, shell=False).communicate()
print(output)
print(result)
输出是:
b'in main\n'
b''
第四次审判:
p4 = subprocess.run(args, stdout=PIPE, stderr=PIPE)
print(p4)
输出是:
CompletedProcess(args=['python', '/path/to/file/hello.py'], returncode=0, stdout=b'in main\n', stderr=b'')
第五次审判:
p5 =subprocess.getstatusoutput(args)
print(p5)
输出是:
(0, '')
谁能帮忙?
【问题讨论】:
-
我不知道有任何操作系统支持非数字返回码。如果要将字符串
'hello world!'传递给父进程,则需要通过文件或通过stdout/stderr。 -
@0x5453 即使返回值是一个值而不是
hello world!,仍然,以上都不行!
标签: python scripting subprocess