发送 gzip 数据而不解压缩

send gzip data without unzipping

我目前正在为 RaspberryPi 编写脚本,使用 SIM 模块将数据发送到 FTP 服务器。问题是,有些数据非常大,我将它们格式化为 csv 文件,但仍然有点大,无法通过 GPRS 发送。通过将它们压缩到 gz 文件中,它可以将大小减少 5,这很好,但是为了发送数据,唯一的方法是逐行发送数据。我想知道是否有一种方法可以在不发送未压缩数据的情况下发送 gzip 文件的信息。到目前为止,这是我的代码:

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

此处返回的长度是未压缩数据的长度,但我想能够检索gzip文件的未压缩值?可行吗?

感谢您的帮助。

    zipp = gzip.GzipFile(file_data,'rb')

特别要求解压缩。如果您只想读取原始二进制 gzip 数据,请使用常规 open:

    zipp = open(file_data,'rb')

不过,您不需要将文件读入内存来获取其大小。 os.stat 函数可让您在不打开文件的情况下获取有关文件元数据的信息。