I am currently working on a script for RaspberryPi using a SIM module to send data to an FTP server. Problem is, some data are quite large and I formatted them into csv files but still, are a bit large to send through GPRS. By compressing them in gz files it reduces the size by 5 which is great, but in order to send data, the only way is to send data line by line. I was wondering if there was a way to send the information of a gzip file without sending the uncompressed data. Here is my code so far:
list_of_files = glob.glob('/home/pi/src/git/RPI/DATA/*.gz') print(list_of_files) for file_data in list_of_files: zipp = gzip.GzipFile(file_data,'rb') file_content = zipp.read() #array = np.fromstring(file_content, dtype='f4') print(len(file_content)) #AT commands to send the file_content to FTP server
Here the length returned is the length of the uncompressed data, but i want to be able to retrieve the uncompressed value of the gzip file? Is it doable?
Thanks for your help.
Advertisement
Answer
zipp = gzip.GzipFile(file_data,'rb')
specifically requests unzipping. If you just want to read the bare raw binary gzip
data, use a regular open
:
zipp = open(file_data,'rb')
You don’t need to read the file into memory to fetch its size, though. The os.stat
function lets you get information about a file’s metadata without opening it.