在Python中直接将系统调用输出连接到记录器

时间:2012-03-30 09:44:24

标签: python logging call stdout

我正在编写一些代码,其中涉及从Python运行一些shell命令,理想情况下,我想将这些命令的输出集成到我正在使用的记录器中。我知道我可以将stdout转移到文件/套接字中,如下所示:

call( '<a-shell-cmd>', shell=True, stdout=myFile )

但我宁愿没有打开临时文件的绑定,循环写入输出的文件,关闭文件,删除文件等。如果无论如何我可以直接将输出发送到记录器,它对我来说似乎更整洁。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

使用subprocess module

提示:您可以通过http://docs.python.org/release/<major>.<minor>/

转到特定版本的python的文档

从Python 2.7及以上版本开始:

output = subprocess.check_output(["command", "arg1"], shell=True)

在Python 2.4中:

process = subprocess.Popen(["command", "arg1"], shell=True, stdout=subprocess.PIPE)
stdout,stderr = process.communicate()
# not shown: how to use Popen.poll() to wait for process death.
# while filling an output buffer
print stdout

在Python 2.4下面:

output = os.popen('ls')

答案 1 :(得分:1)

使用os.popen

output = os.popen('ls')

然后您可以记录输出或在调用上述内容时直接输出。