2009-09-03 101 views
0

我有一个python脚本的运行这段代码:保存蟒蛇输出到日志

strpath = "sudo svnadmin create /svn/repos/" + short_name 
os.popen (strpath, 'w') 

我怎样才能获得存储在一个变量或写入日志文件在当前目录中该命令的输出?

我知道,可能没有输出,但如果有的话,我需要知道。

+2

Duplicate:http://stackoverflow.com/questions/1277866/python-subprocess-module-looping-over-stdout-of-child-process,http://stackoverflow.com/questions/880918/how-to -red-of-output-of-exe-to-a-file-in-python – 2009-09-03 19:00:22

回答

3

使用'r'模式打开的管道,而不是:

f = os.popen (strpath, 'r') 
for line in f: 
    print line 
f.close() 

有关更多信息,请参阅os.popen()的文档。

subprocess模块是更好的方式来执行这样的外部命令,因为它允许更多的流程执行控制,以及同时提供对输入和输出流的访问。

+0

谢谢格雷格的帖子! – shaiss 2009-09-03 19:08:27

0

你可以做你的bash部分:

strpath = "sudo svnadmin create /svn/repos/" + short_name + ' > log.txt' 
1

如果你不需要写命令,那么就改变“W”到“R”:

strpath = "sudo svnadmin create /svn/repos/" + short_name 
output = os.popen (strpath, 'r') 

for line in output.readlines(): 
    # do stuff 

或者,如果你不想处理行由行:

strpath = "sudo svnadmin create /svn/repos/" + short_name 
output = os.popen (strpath, 'r') 

outtext = output.read() 

不过,我会呼应看子模块Greg的建议,我nstead。

+0

谢谢DAV指出r – shaiss 2009-09-03 19:09:06