【发布时间】:2017-03-11 02:31:13
【问题描述】:
我正在尝试编写一个充当简单 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"
【问题讨论】:
标签: python shell unix redirect grep