gpt4 book ai didi

python - 重定向 subprocess.call 输出不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 05:12:05 25 4
gpt4 key购买 nike

我正在尝试编写一个充当简单 UNIX bash 命令 shell 的 python 脚本。我需要阻止脚本的所有输出并将其重定向到两个文件(错误或输出)之一。不幸的是,当在目录上运行我的 bash 命令时,我得到输出“grep: test_dir: Is a directory”。这是在将我的 sys.stdout 重定向到一个临时文件之后。我的理论是 grep 本身正在重置输出并打印此错误,而不是简单地返回输出。有没有一种方法可以将所有输出重定向到一个文件?或者我只是误解了如何在 python 中重定向?

这是我当前的代码。

try:
temp_out = sys.stdout
sys.stdout = open('./temp.txt', 'w+')
output = subprocess.call(['grep', search[0], search[1]])
sys.stdout = temp_out
except subprocess.CalledProcessError as err:
print output
err_output = err.returncode
print "In error"

最佳答案

不要替换sys.stdout;打开一个普通文件并将其作为 stdout 参数传递。

with open('destination.txt', 'w') as redirected_output:
p = subprocess.Popen(['ls', '-l'], stdout=redirected_output)
p.communicate()

刚刚为我工作。

关于python - 重定向 subprocess.call 输出不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42730656/

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