我有一个运行此代码的python脚本:
strpath = "sudo svnadmin create /svn/repos/" + short_name
os.popen (strpath, 'w')
如何将该命令的输出存储在变量中或写入当前目录中的日志文件?
我知道,可能没有输出,但如果有,我需要知道。
答案 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'