2009-09-03 127 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