[英]Redirect output in two different files in python
我將腳本的輸出記錄在2個不同的文件中,即Dailydata.txt和HistoricData.txt。 我希望我只需在以下兩個不同的文件中進行stdout
,
sys.stdout = open('historicData.txt', 'a+')
sys.stdout = open('Dailydata.txt', 'r+')
但是,它僅將輸出定向到一個文件。
所以我首先將輸出重定向到DailyData.txt
,然后將其寫入HistoricData.txt
with open(file_path + 'HistoricDaily.txt', 'r') as fread, open(file_path + 'FidelityHistoric.txt', 'a+') as fwrite:
fread_lines = fread.readlines()
for i in fread_lines:
fwrite.write(i)
這里發生的是,每次我運行腳本時,它都會寫入當前運行編號,例如HistoricData.txt
包含1 2 3 4
, DailyData.txt
包含5
。 當我運行腳本時, DailyData.txt
將包含6
,而不是復制6
腳本副本5
。 如果我再次運行它,它將復制6
而不是7
。
我的劇本就像
class MyClass:
stdout = open('historicData.txt', 'a+')
try:
# my code Selenium stuff
except:
# my code
finally:
# copy data to HistoricData here
我要在這里實現的是腳本應該從HistoricData
DailyData
復制相同的數據
同時將數據重定向到2個不同的文件中。
任何幫助將不勝感激。
我鼓勵您使用logging
模塊https://docs.python.org/2/howto/logging-cookbook.html
您可以創建兩個附加程序(每個文件一個)和一種適合您需要的日志記錄格式。
猴子補丁sys.stdout
是一種利用標准庫中已包含的適當類來實現功能的簡便方法。
如果我理解正確這是你在嘗試寫一些數據到一個文件( Dailydata.txt
),將它復制到另一個( historicData.txt
),則在第二次迭代你想Dailydata.txt
與新的數據被重寫在historicData.txt
的和添加新數據。
您可以嘗試以下方法:
with open('Dailydata.txt', 'rb') as r:
with open('historicData.txt', 'ab') as w:
lines = r.readlines()
for line in lines:
w.write(str(line))
相反,如果要在兩個文件中同時寫入相同的數據,則只需顯式地這樣做:
def my_data_generator():
#do stuff
def my_writer():
daily = open('Dailydata.txt', 'w')
historic = open('historicData.txt', 'ab')
data = my_data_generator()
daily.write(data)
historic.write(data)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.