关于Kaggle如何下载以及导出文件
主要涉及两个步骤打包&导出,代码均来自同站大佬(不记得在哪了),本文仅做一个小的针对性的总结
1.打包
注意代码中注释的两个部分
import os
import zipfile
import datetime
def file2zip(packagePath, zipPath):
'''
:param packagePath: 文件夹路径
:param zipPath: 压缩包路径
:return:
'''
zip = zipfile.ZipFile(zipPath, 'w', zipfile.ZIP_DEFLATED)
for path, dirNames, fileNames in os.walk(packagePath):
fpath = path.replace(packagePath, '')
for name in fileNames:
fullName = os.path.join(path, name)
name = fpath + '\\' + name
zip.write(fullName, name)
zip.close()
if __name__ == "__main__":
# 文件夹路径
packagePath = '/kaggle/working/...'#需要压缩的文件路径
zipPath = '/kaggle/working/output.zip'#保存压缩包的路径
if os.path.exists(zipPath):
os.remove(zipPath)
file2zip(packagePath, zipPath)
print("打包完成")
print(datetime.datetime.utcnow())
2.导出
通常情况直接在kaggle的output后点击下载,即可通过网站下载文件,但是有的时候会遇到如下情况:
(1)文件目录复杂,导致在kaggle的output区无法打开到需要下载的目录
(2)下载的文件过大,kaggle无法下载
针对这两个情况,下面给出解决办法:
2.1目录复杂
import numpy as np # linear algebra
import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)
import os
for dirname, _, filenames in os.walk('/kaggle'):
for filename in filenames:
print(os.path.join(dirname, filename))
通过上述代码查询目录中的文件,然后复制其路径,按照1中的步骤打包
2.2文件过大
import os
#切换工作路径
os.chdir('/kaggle/working')#改变工作路径至‘’
print(os.getcwd())#查看当前工作路径是否切换
#选择需要下载的文件名
print(os.listdir("/kaggle/working"))#列出‘’路径中的文件夹的名字,这里要与工作路径一致
from IPython.display import FileLink
FileLink('output.zip')#‘’中选择os.listdir()列出的文件中的一个
运行如上代码,可以在结果中得到一个可以下载的链接
3.实例展示
情景一:打包文件过大,浏览器无法下载
情景描述
我将一个包含val和test的image数据集进行划分,得到test_image和val_image子数据集,然后我想要把这个结果下载下来,可是kaggle本身并不提供下载的选项,所以打包了文件,但是由于文件太大浏览器下载没有响应。
操作流程
1.使用“1.打包”中的代码生成output.zip。

2.然后点击output.zip后的下载,服务器没有相应,运行“2.2文件过大”中的代码后cell输出如下:

3.点击输出部分的链接即可下载。
以上就是如何在kaggle中打包并且下载文件的过程。
注意
1.文件的路径需要根据自己的代码进行改变
参考文献
有人找到了可以踹一下我
文章介绍了如何在Kaggle上打包文件夹为zip并导出。提供了两个步骤:一是使用Python的zipfile模块打包文件;二是针对文件目录复杂或文件过大的情况,提供了查询路径和通过FileLink下载的方法。注意需根据实际文件路径调整代码。
859

被折叠的 条评论
为什么被折叠?



