发送 gzip 数据而不解压缩

问题描述

我目前正在为 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文件的未压缩值?可行吗?

感谢您的帮助。

解决方法

react-native-pose

特别要求解压。如果您只想读取原始二进制 zipp = gzip.GzipFile(file_data,'rb') 数据,请使用常规 gzip:

open

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