gpt4 book ai didi

python - Python 的 subprocess.call() 和 Bash 流在语义上是否不同?

转载 作者:太空宇宙 更新时间:2023-11-03 17:51:18 25 4
gpt4 key购买 nike

来自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.txtpython 有效并且在路径等中,这些对于简单情况的行为是相同的。

是否存在 shell 版本的行为与 Python 版本不同的情况?

最佳答案

Are there any cases where the shell version could behave differently than the Python version?

这取决于您想要的效果。程序执行和流重定向在 shell 行中执行的操作与 Python 脚本中执行的操作完全相同。另一方面,shell 确实会对子进程进行一些其他更改,例如将其放入新的进程组并使其成为终端上的前台进程组。

编辑:就您的评论而言,存在差异,但至少流程组更改是我能立即想到的唯一差异。这确实是一个非常微小的差异,不执行相当高级作业控制的程序不会受到任何影响。至少内存限制或任何性能影响肯定没有变化。一般来说,至少不存在会影响绝大多数程序的差异。

当然,您也可以在 Python 中进行相同的进程组更改:请参阅 os.setpgid() 和 os.tcsetpgrp()。

关于python - Python 的 subprocess.call() 和 Bash 流在语义上是否不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29043333/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com