簡體   English   中英

在Python中從數據源創建多個文件

[英]Creating Multiple files from a data source in Python

我有一個使用Python處理的數據源。 我想將數據保存到文件中,以便一旦達到閾值(即:1K,1M),文件就會關閉,並自動打開一個新文件來保存數據。

即:

<file handler with buffer 200>
file.write('a'*1000)

上面的行將基於數據生成5個文件。 是否有預編譯的python庫可以處理此問題,還是我需要自己編寫一個?

如果一個記錄器框架太多,您可以自己完成-不需要多於十幾行的代碼。 獲取文件大小的最簡單方法是調用打開的文件描述符的tell()方法。

您還可以跟蹤正在輸出的字節,但是如果您的程序有時會追加到預先存在的文件中,則這需要其他邏輯。

PyPI上快速搜索帶來了這個可能做你想做的,但除此之外,我建議你自己寫的話,這將是一個相當簡單的工具來編寫。

我還沒有測試過,但是這是一個應該做的非常簡單的實現(python3)。

class RotatingFile:

    def __init__(self, basename, size, binary=False):
        self.basename = basename
        self.size = size
        self.counter = 0
        if binary:
            self.buffer = b''
        else:
            self.buffer = ''

    def write(self, data)
        self.buffer += data
        if len(self.buffer) >= self.size:
            data = self.buffer[:self.size]
            self.buffer = self.buffer[self.size:]
            name = self.basename + str(self.counter)
            with open(name) as f:
                f.write(data)
            self.counter += 1

    def flush(self):
        name = self.basename + str(self.counter)
        with open(name) as f:
            f.write(self.buffer)

因此,這應該寫入6個文件:

>>> f = RotatingFile('myfile', 1000)
>>> f.write('a' * 5500)
>>> f.flush()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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