kaggle中的input有很多文件,有的时候我们想要将它们全部打包下载下来,这个时候就要使用相关的压缩文件夹的操作了
具体的代码如下
import os
import zipfile
startdir = "../input" #要压缩的文件夹路径,这里选择将input中的所有文件压缩
file_news = './' +'result.zip' # 压缩后文件夹的名字,这里压缩到kaggle之中的output文件之中,名称为result.zip
z = zipfile.ZipFile(file_news,'w',zipfile.ZIP_DEFLATED) #参数一:文件夹名
for dirpath, dirnames, filenames in os.walk(startdir):
fpath = dirpath.replace(startdir,'') #这一句很重要,不replace的话,就从根目录开始复制
fpath = fpath and fpath + os.sep or ''#实现当前文件夹以及包含的所有文件的压缩
for filename in filenames:
z.write(os.path.join(dirpath, filename),fpath+filename)
print ('压缩成功')
z.close()
当input之中的文件总量过大的时候,可以对每一个小的文件进行分别的下载
import os
import zipfile
def get_filelist(dir):
for home, dirs, files in os.walk(dir):
print("#######dir list#######")
for dir in dirs:
print('../input/'+dir)
zips('../input/'+dir,dir)
print("#######dir list#######")
def zips(startdir,dir):
#startdir = "../input/bart-code" #要压缩的文件夹路径,这里选择将input中的所有文件压缩
file_news = dir +'.zip' # 压缩后文件夹的名字,这里压缩到kaggle之中的output文件之中,名称为result.zip
z = zipfile.ZipFile(file_news,'w',zipfile.ZIP_DEFLATED) #参数一:文件夹名
for dirpath, dirnames, filenames in os.walk(startdir):
fpath = dirpath.replace(startdir,'') #这一句很重要,不replace的话,就从根目录开始复制
fpath = fpath and fpath + os.sep or ''#实现当前文件夹以及包含的所有文件的压缩
for filename in filenames:
z.write(os.path.join(dirpath, filename),fpath+filename)
print ('压缩成功')
z.close()
get_filelist('../input')