【问题标题】:can't zip files from Jupyter Notebook无法从 Jupyter Notebook 压缩文件
【发布时间】:2020-09-14 03:04:52
【问题描述】:

我尝试压缩文件,我使用了来自https://thispointer.com/python-how-to-create-a-zip-archive-from-multiple-files-or-directory/的示例

with ZipFile('sample2.zip', 'w') as zipObj2:

   # Add multiple files to the zip
   zipObj2.write('sample_file.csv')

sample2.zip 已创建,但为空。当然csv文件存在且不为空。

  • 我从 Jupyter Notebook 运行此代码

编辑:我正在使用相对路径 -

input_dir = "../data/example/" 
with zipfile.ZipFile(os.path.join(input_dir, 'f.zip'), 'a') as zipObj2: 
zipObj2.write(os.path.join(input_dir, 'f.tif'))

【问题讨论】:

  • 您确定sample_file.csv 与创建sample2.zip 的文件夹位于同一文件夹中吗?
  • 是的,该文件夹包含 sample_file.csv 并且输出文件 (sample2.zip) 保存在同一位置
  • 您的代码使用 Py2.7、3.6 和 3.8 对我来说效果很好
  • 它也可以在 Jupyter Notebook 上使用吗?有没有可能导致问题?
  • @obart 我还会检查来自File / Trust Notebook 的文件夹的写入权限和笔记本的可信度。

标签: python jupyter-notebook zip


【解决方案1】:

您尝试关闭 zip 文件以保存?

from zipfile import ZipFile

with ZipFile('sample2.zip', 'w') as zipObj2:
   zipObj2.write('sample_file.csv')
   zipObj2.close()

【讨论】:

  • with 声明的目的是什么?
  • 不完全了解,但肯定知道它是用来创建、读取和覆盖文件的。我查看了zipfile的教程
  • 基本上它允许对支持它的类的对象进行自动关闭调用;所以在上面的代码中没有用。根据 dunder exit 的实施,它甚至可能很危险。
  • 你可能是真的。这可能是因为取决于 zipfile 的版本,我在我的 jupyter 笔记本上尝试了这段代码,但没有关闭 zip 文件,它返回了一个空的 zip 文件。当我关闭它时,我达到了我的目标
【解决方案2】:

我对您的问题有点困惑,但如果我是正确的,听起来您正试图将多个 CSV 文件放在一个压缩文件中?如果是这样,这就是你要找的:

#initiate files variable that contains the directory from which you wish to zip csv files
files=[f for f in os.listdir("./your_directory") if f.endswith('.csv')]

#initalize empty DataFrame 
all_data = pd.DataFrame()

#iterate through the files variable and concatenate them to all_data 
for file in files:
df = pd.read_csv('./your_directory' + file)
all_data = pd.concat([all_data, df])

然后调用您的新 DataFrame(all_data) 以验证内容是否已传输。

【讨论】:

  • 我正在尝试创建一个包含 csv 文件的新 .zip 文件
猜你喜欢
  • 2021-10-09
  • 2018-06-08
  • 1970-01-01
  • 1970-01-01
  • 2019-11-25
  • 2017-11-13
  • 2019-08-12
  • 1970-01-01
  • 2019-07-09
相关资源
最近更新 更多