zipfile.LargeZipFile:文件大小需要 ZIP64 扩展名

zipfile.LargeZipFile: Filesize would require ZIP64 extensions

我正在创建一个 Excel 文件并向其中写入一些行。这是我写的:

import string
import xlsxwriter
workbook = xlsxwriter.Workbook('DataSet.xlsx')
worksheet = workbook.add_worksheet()
df2 = pd.read_csv ('d.csv', low_memory=False)
from nltk.tokenize import word_tokenize
count = 0
for index, row in df2.iterrows():
    if row['source_id'] == 'EN':
        count += 1
        print(count)
        text = row['text']
        new_string = text.translate(str.maketrans('', '', string.punctuation))
        new_string = word_tokenize(new_string)
        sentence = ''
        tokens = ''
        for word in new_string:
            sample_len = len(new_string)
            count_len = 0
            sentence += word
            sentence += ' '
            tokens += word
            if count_len != sample_len:
                tokens += ', '
            worksheet.write(count, 3, tokens)
            worksheet.write(count, 2, sentence)
            worksheet.write(count, 1, 'Discrimination')
            worksheet.write(count, 0, count)
workbook.close()

然而,在行号 94165 之后,它给了我以下错误并且不再继续:

Traceback (most recent call last):
  File "/Users/PycharmProjects/pythonProject/venv/lib/python3.9/site-packages/xlsxwriter/workbook.py", line 323, in close
    self._store_workbook()
  File "/Users/PycharmProjects/pythonProject/venv/lib/python3.9/site-packages/xlsxwriter/workbook.py", line 745, in _store_workbook
    raise e
  File "/Users/PycharmProjects/pythonProject/venv/lib/python3.9/site-packages/xlsxwriter/workbook.py", line 739, in _store_workbook
    xlsx_file.write(os_filename, xml_filename)
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/zipfile.py", line 1761, in write
    with open(filename, "rb") as src, self.open(zinfo, 'w') as dest:
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/zipfile.py", line 1505, in open
    return self._open_to_write(zinfo, force_zip64=force_zip64)
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/zipfile.py", line 1597, in _open_to_write
    self._writecheck(zinfo)
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/zipfile.py", line 1712, in _writecheck
    raise LargeZipFile(requires_zip64 +
zipfile.LargeZipFile: Filesize would require ZIP64 extensions

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/PycharmProjects/pythonProject/Python file.py", line 64, in <module>
    workbook.close()
  File "/Users/PycharmProjects/pythonProject/venv/lib/python3.9/site-packages/xlsxwriter/workbook.py", line 327, in close
    raise FileSizeError("Filesize would require ZIP64 extensions. "
xlsxwriter.exceptions.FileSizeError: Filesize would require ZIP64 extensions. Use workbook.use_zip64().

有谁知道为什么会发生这种情况以及如何解决?

问题是由于生成的文件或其组成部分的大小超过 4GB。这需要 xlsxwriter 将额外的参数传递给 Python 标准库 zipfile.py 以支持更大的 zip 文件大小。

answer/solution埋在异常信息中:

xlsxwriter.exceptions.FileSizeError: Filesize would require ZIP64 extensions.
Use workbook.use_zip64().

您可以将其添加为构造函数选项或工作簿方法:

workbook = xlsxwriter.Workbook(filename, {'use_zip64': True})

# Same as:
workbook = xlsxwriter.Workbook(filename)
workbook.use_zip64()

查看 the Workbook Constructor and workbook.use_zip64() 上的文档,包括以下注释:

Note:

When using the use_zip64() option the zip file created by the Python standard library zipfile.py may cause Excel to issue a warning about repairing the file. This warning is annoying but harmless. The “repaired” file will contain all of the data written by XlsxWriter, only the zip container will be changed.