簡體   English   中英

無法將字節寫入 gif 文件(python)

[英]cannot write bytes to gif file (python)

我正在開展一個項目,該項目涉及獲取 stream 字節並將它們組裝成 .gif 文件。

我的 class 用於創建文件並寫入文件是這樣的:

class fileAdd():
    def create_file(self, input):
        self.filepath = pathlib.Path('gifs/' + input)
        self.fp = open(self.filepath, 'ab')
        print("file created")
    def add_data(self, input):
        self.fp.write(input)
        print("adding data")
    def close(self):
        self.fp.close()

這里 create_file() 采用文件名+擴展名並創建/打開文件。 然后,重復調用 add_data() 以將原始二進制數據以 140 字節塊的形式添加到文件中。 最后,調用 close() 來關閉文件。

這就是問題所在: add_data() 永遠不會超過self.fp.write() ,“添加數據”永遠不會被打印出來,並且 close() 似乎也根本不起作用。 這不是調用這些函數的代碼的問題。 如果我刪除self.fp.write()它會打印出“添加數據”

為什么會發生這種情況,我該如何解決?

TIA,奧里。

我猜測您正在嘗試直接調用函數並且沒有從您的 class 創建 object,然后通過您的 object 調用函數。 以下是我使用您的 class 編寫的代碼片段以及將數據抽出到二進制文件的函數。

import pathlib

class fileAdd():
    def create_file(self, input):
        self.filepath = pathlib.Path('gifs/' + input)
        self.fp = open(self.filepath, 'ab')
        print("file created")
    def add_data(self, input):
        self.fp.write(input)
        print("adding data")
    def close(self):
        self.fp.close()

x = b'\x00\x00\x00'

fpx = fileAdd()

fpx.create_file("GIF")

fpx.add_data(x)

fpx.close()

以下是名為“GIF”的文件的示例 output。

@Una:~/Python_Programs/File/gifs$ hexdump GIF
0000000 6548 6c6c 006f 0000                    
0000008

試一試,看看是否能推動你前進。

暫無
暫無

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

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