Gzip 压缩 CSV 文件会截断它
Gzipping a CSV file truncates it
我有一个脚本可以将数据写入 CSV 文件,然后对其进行 gzip 压缩。
奇怪的是 gzip 文件被截断了几行(文件总大小超过 1800 万行)。
我手动压缩了脚本生成的 CSV 文件,没有文件被截断。但是,当我使用 Python 压缩文件时(我尝试了 gzip、os 和子进程),文件被截断了。我不明白为什么会这样。
下面的代码片段:
#Remove quotes from file
with open(localFile, "r") as csvfile:
csvreader = csv.reader(csvfile, skipinitialspace=True)
#Skip the header row
next(csvreader)
writer = csv.writer(open(outputFile, "w"), quoting=csv.QUOTE_NONE)
for row in csvreader:
writer.writerow(row)
#Zip file
zipCommand = f"gzip {outputFile}"
exit_code =os.system(zipCommand)
文件总大小超过 1800 万行
我假设将所有这些都保存在 RAM 内存中是不可行的。您可以提供 csv.writer gzip 的文件句柄来避免这种情况。考虑以下简单示例:
import csv, gzip
with gzip.open("file.csv.gz", "wt") as gf:
writer = csv.writer(gf, quoting=csv.QUOTE_NONE)
writer.writerow([1,2,3])
writer.writerow([4,5,6])
writer.writerow([7,8,9])
这将创建 file.csv.gz
,在 gunzip file.csv.gz
之后您将获得包含以下内容的文件
1,2,3
4,5,6
7,8,9
注意:使用 wt
(写入文本)模式与发出文本的 csv.writer
一起使用。
我有一个脚本可以将数据写入 CSV 文件,然后对其进行 gzip 压缩。
奇怪的是 gzip 文件被截断了几行(文件总大小超过 1800 万行)。
我手动压缩了脚本生成的 CSV 文件,没有文件被截断。但是,当我使用 Python 压缩文件时(我尝试了 gzip、os 和子进程),文件被截断了。我不明白为什么会这样。
下面的代码片段:
#Remove quotes from file
with open(localFile, "r") as csvfile:
csvreader = csv.reader(csvfile, skipinitialspace=True)
#Skip the header row
next(csvreader)
writer = csv.writer(open(outputFile, "w"), quoting=csv.QUOTE_NONE)
for row in csvreader:
writer.writerow(row)
#Zip file
zipCommand = f"gzip {outputFile}"
exit_code =os.system(zipCommand)
文件总大小超过 1800 万行
我假设将所有这些都保存在 RAM 内存中是不可行的。您可以提供 csv.writer gzip 的文件句柄来避免这种情况。考虑以下简单示例:
import csv, gzip
with gzip.open("file.csv.gz", "wt") as gf:
writer = csv.writer(gf, quoting=csv.QUOTE_NONE)
writer.writerow([1,2,3])
writer.writerow([4,5,6])
writer.writerow([7,8,9])
这将创建 file.csv.gz
,在 gunzip file.csv.gz
之后您将获得包含以下内容的文件
1,2,3
4,5,6
7,8,9
注意:使用 wt
(写入文本)模式与发出文本的 csv.writer
一起使用。