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