Python 无法在缓冲区中压缩文件

Python 无法在缓冲区中压缩文件,python,zipfile,Python,Zipfile,我想使用Python中的zipFile将CSV文件压缩到(缓冲区)中 下面是我的代码,我已经尝试和错误日志附件 I Dont want to use the compression in df.to_csv due to Version issue 我犯了一个错误 Traceback (most recent call last): File "C:/Users/Window/PycharmProjects/dfZip/dfZiptest.py", line 25, in <mod

我想使用Python中的
zipFile
将CSV文件压缩到(缓冲区)中

下面是我的代码,我已经尝试和错误日志附件

I Dont want to use the compression in df.to_csv due to Version issue 
我犯了一个错误

Traceback (most recent call last):
  File "C:/Users/Window/PycharmProjects/dfZip/dfZiptest.py", line 25, in <module>
    zf.writestr(localfile, s_buf.read())
  File "C:\Python\Python37\lib\zipfile.py", line 1758, in writestr
    date_time=time.localtime(time.time())[:6])
  File "C:\Python\Python37\lib\zipfile.py", line 345, in __init__
    null_byte = filename.find(chr(0))
AttributeError: '_io.BytesIO' object has no attribute 'find'
回溯(最近一次呼叫最后一次):
文件“C:/Users/Window/PycharmProjects/dfZip/dfZiptest.py”,第25行,在
zf.writestr(localfile,s_buf.read())
文件“C:\Python\Python37\lib\zipfile.py”,第1758行,以书面形式
date\u time=time.localtime(time.time())[:6])
文件“C:\Python\Python37\lib\zipfile.py”,第345行,在_init中__
null_byte=filename.find(chr(0))
AttributeError:“\u io.BytesIO”对象没有属性“find”

您正在将io.BytesIO()对象作为第一个参数传递给ZipFile.writestr(),其中它需要存档名称或ZipInfo对象

zf.writestr(localfile, s_buf.read())
zinfo_或_arcname是将在 存档或ZipInfo实例

资料来源:

你在这里做的是

1-初始化
ZipFile的路径

2-只需传递名称,然后传递要写入存档的文件。在您的例子中,您将
io.BytesIO()
作为名称传递,这对Python来说毫无意义,因此出现了错误


我强烈建议您,首先解决任何
版本
问题,因为虽然“聪明”的解决方案似乎是一个快速的出路,但它们往往会导致可怕的后者,这将是一场噩梦。

我试图通过在编写Zip文件时立即给出文件名来进行更改。您需要为我发布错误以提供进一步帮助。回溯(最后一次调用):文件“C:/Users/sagar/PycharmProjects/dfZip/dfZiptest.py”,第16行,在f.write(zf.getvalue())中AttributeError:'ZipFile'对象没有属性'getvalue'。错误非常明显-ZipFile实例没有getvalue方法。我认为您需要查看文档。如果使用此命令会出现错误FileNotFoundError:[WinError 2]系统找不到指定的文件:“my_filename.cvs”,则此行将无法用作缓冲区中的文件
zf.writestr(localfile, s_buf.read())
zf = zipFile.ZipFile("localzip.zip", mode="w", compression=zipfile.ZIP_DEFLATED)
zf.write(filename + '.cvs', s_buf.read())
zf.close