python中循环压缩zip文件

我有一个数据框,上面有学生的ID,姓名和其他信息。我对学生姓名(stu NAME)进行了分组,我需要为每个学生分别创建一个zip文件(基于学生NAME),然后将其全部压缩。 我可以压缩所有文件,但不能根据学生姓名压缩每个学生的个人资料。我只需要在(out_file.write(csv))之后的循环中一行来压缩每个csv文件。

groupby = df_concat.groupby('stu_NAME')

for n,g in groupby:
    csv=g.to_csv(index=false)

    with open('{}{}.csv'.format(path,n),'w' as out_file:
        out_file.write(csv)


shutil.make_archive('path1','zip','path2')
ctq1989 回答:python中循环压缩zip文件

怎么样:

import pandas as pd
import zipfile

# Create a zip file
def create_zip(srcs,dst,filenames,op):
    zf = zipfile.ZipFile(dst,op,zipfile.ZIP_DEFLATED)
    for src,filename in zip(srcs,filenames):
        zf.write(src,filename)
    zf.close()

def main():
    dct = {'stu_NAME': ['student_2','student_1'],'other_info': [2,1]}

    df = pd.DataFrame(dct)

    groupby = df.groupby(['stu_NAME'])

    zip_all_zips = []
    zip_all_csvs = []

    for n,g in groupby:
        csv=g.to_csv(index=False)
        filename = '{}{}'.format('path_',n)
        filename_csv = filename + '.csv'
        filename_zip = filename + '.zip'
        with open(filename_csv,'w') as out_file:
            out_file.write(csv)
        zip_all_zips.append(filename_zip)
        zip_all_csvs.append(filename_csv)
        # Create a zip file for each student
        create_zip([filename_csv],filename_zip,[filename_csv],'w')

    # Create a zip file with all students (.zip of .zips)
    create_zip(zip_all_zips,'all_students_zip.zip',zip_all_zips,'w')

    # Create a zip file with all students (.zip of .csvs)
    create_zip(zip_all_csvs,'all_students_csv.zip',zip_all_csvs,'w')

if __name__ == '__main__':
    main()

屈服

all_students_csv.zip  
path_student_1.csv  
path_student_2.csv
all_students_zip.zip  
path_student_1.zip  
path_student_2.zip

它将创建(1)每个.csv的.zip,(2)具有所有.csv的.zip和(3)具有所有.zip的.zip。因此,您可以注释掉不需要的内容。如果要在创建.zip后删除.csv,则可以执行以下操作:

import os
for filename_csv in zip_all_csvs:
    os.remove(filename_csv) 
本文链接:https://www.f2er.com/3138775.html

大家都在问