将python输出保存到日志中

时间:2009-09-03 18:56:57

标签: python logging variables

我有一个运行此代码的python脚本:

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

如何将该命令的输出存储在变量中或写入当前目录中的日志文件?

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

3 个答案:

答案 0 :(得分:3)

使用'r'模式打开管道:

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

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

subprocess模块是执行此类外部命令的更好方法,因为它允许更多地控制流程执行,并同时提供对输入和输出流的访问。

答案 1 :(得分: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关于查看子进程模块的建议。

答案 2 :(得分:0)

你可以在你的bash-part中做到这一点:

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