簡體   English   中英

在python中將輸出重定向到兩個不同的文件中

[英]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 4DailyData.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.

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