来自bash:
$ python script.py < input.txt 2> stderr.txt > stdout.txt
在Python中:
import subprocess
subprocess.call(["python", "script.py"],
stdin=open('input.txt', 'rb'),
stdout=open('stdout.txt', 'wb'),
stderr=open('stderr.txt', 'wb'))
假设有效input.txt
,python
有效并且在路径等中,这些行为与简单情况相同。
是否存在shell版本的行为与Python版本不同的情况?
答案 0 :(得分:1)
是否存在shell版本的行为与Python版本不同的情况?
这取决于你的想法。程序执行和流重定向在shell行中完成与Python脚本完全相同的操作。另一方面,shell会对子进程执行一些其他更改,例如将其放入新进程组并将其作为终端上的前台进程组。
编辑:要进入评论的上下文,是的差异,但过程组更改是我能立即想到的唯一一个,至少。这确实是一个非常小的差异,没有任何那些不能做相当先进的工作控制的程序会受到影响。至少,内存限制或任何性能影响肯定没有变化。一般来说,至少在浩大的大多数程序中都没有差异。
当然,您也可以在Python中执行相同的流程组更改:请参阅os.setpgid()
和os.tcsetpgrp()
。