[英]writing terminal output to file
在我的機器上,我有一些軟件可以在終端中接收命令並返回值列表。
要運行它,我必須輸入以下內容:
pdv -t filename
我正在嘗試將其作為python程序的一部分運行。 當我運行以下命令時:
os.system('pdv -t %s' % (epoch_name))
然后我得到想要返回到終端的值(其中epoch_name是文件名的變量名)。 但是,當我嘗試將結果寫入文件時:
os.system('pdv -t %s % "(epoch_name)" > 123.txt')
產生了文件123.txt,但它為空。
我知道我放錯了“和/或'字符,但是我不知道它們應該去哪里。
任何幫助將不勝感激!
您可以使用帶有stdout關鍵字參數的subprocess.call:
import subprocess
cmd = ['ls', '-l']
with open('output.txt', 'w') as out:
return_code = subprocess.call(cmd, stdout=out)
我相信這是您想要的。 os.system()
參數應該是代表操作系統命令的字符串。
os.system('pdv -t %s > 123.txt' % epoch_name)
有subprocess
模塊,如果您打算用python進一步處理輸出,可能值得研究。
最好使用os.system的子流程模塊
import subprocess
subprocess.call(['pdv', '-t', filename, '>', dest_file_name])
from subprocess import Popen
proc = Popen(['pdv', '-t', epoch_name], stdout = open('123.txt', 'w'))
查看命令script
是否可用。 它可能會滿足您的需求。
或者,您也可以使用sys.stdout
從DiveIntoPython中檢查此文檔,或者在這里進行討論以幫助您。
import sys
print 'Dive in'
saveout = sys.stdout
fsock = open('out.log', 'w')
sys.stdout = fsock
print 'This message will be logged instead of displayed'
sys.stdout = saveout
fsock.close()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.