I'm working on a project that involves taking a stream of bytes and assembling them into a .gif file.
my class for creating a file and writing to it is this:
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()
here create_file() takes a filename extension and creates/opens the file. then, add_data() is repeatedly called to add raw binary data to the file in 140 byte chunks. finally, close() is called to close the file.
here's the problem: add_data() never gets past self.fp.write()
, "adding data" never gets printed, and close() doesn't seem to work at all either. this is not an issue with the code calling these functions. if I delete self.fp.write()
it prints out "adding data"
why does this happen and how can I fix it?
TIA, Auri.
CodePudding user response:
I am going to take a guess that you are attempting to directly call the functions and have not created an object from your class and then called the functions via your object. Following is a snippet of code I wrote using your class and functions that did pump out data to a binary file.
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()
Following is the sample output to the file called "GIF".
@Una:~/Python_Programs/File/gifs$ hexdump GIF
0000000 6548 6c6c 006f 0000
0000008
Give that a try and see if that moves you forward.