簡體   English   中英

將終端輸出寫入文件

[英]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.stdoutDiveIntoPython中檢查此文檔,或者在這里進行討論以幫助您。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM