发送 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
函数可让您在不打开文件的情况下获取有关文件元数据的信息。
我目前正在为 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
函数可让您在不打开文件的情况下获取有关文件元数据的信息。