700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > python中zipfile的使用_如何在Python中使用ZIPFILE模块压缩文件。

python中zipfile的使用_如何在Python中使用ZIPFILE模块压缩文件。

时间:2022-12-28 10:53:28

相关推荐

python中zipfile的使用_如何在Python中使用ZIPFILE模块压缩文件。

问题

您要在python中创建一个压缩文件。

介绍

ZIP文件可以保存许多其他文件的压缩内容。压缩文件会减小其在磁盘上的大小,这在通过Internet或使用Control-m AFT或Connect direct甚至scp在系统之间进行传输时非常有用。

Python程序使用zipfile模块中的函数创建ZIP文件。

怎么做...

1.我们将使用zipfile和io包。如果系统上缺少任何软件包,请使用pip安装它们。如果不确定,请使用pip Frozen命令验证软件包。

2.我们将编写一个将样本数据写入文件的功能。下面的函数write_data_to_files将数据作为输入,并在当前目录名称中创建一个文件。

示例#Function:write_data_to_files

defwrite_data_to_files(inp_data,file_name):

"""

function:createacsvfilewiththedatapassedtothiscode

args:inp_data:datatobewrittentothetargetfile

file_name:targetfilenametostorethedata

return:none

assumption:Filetobecreatedandthiscodeareinsamedirectory.

"""

print(f"***Writingthedatato-{file_name}")

throwaway_storage=io.StringIO(inp_data)

withopen(file_name,'w')asf:

forlineinthrowaway_storage:

f.write(line)

3.现在,我们将编写一个函数file_compress来压缩在上述步骤中创建的文件。此功能接受文件列表,遍历文件并将其压缩为zip文件。注释中提供了每个步骤的详细说明。

要创建自己的压缩ZIP文件,您必须通过将第二个参数'w'传递给写模式来打开ZipFile对象。

当您将路径传递给write()ZipFile对象的方法时,Python会在该路径上压缩文件并将其添加到ZIP文件中。

write()method的第一个参数是要添加的文件名的字符串。

第二个参数是压缩类型参数-告诉计算机应使用哪种算法压缩文件。

示例#Function:file_compress

deffile_compress(inp_file_names,out_zip_file):

"""

function:file_compress

args:inp_file_names:listoffilenamestobezipped

out_zip_file:outputzipfile

return:none

assumption:Inputfilepathsandthiscodeisinsamedirectory.

"""

#SelectthecompressionmodeZIP_DEFLATEDforcompression

#orzipfile.ZIP_STOREDtojuststorethefile

compression=zipfile.ZIP_DEFLATED

print(f"***InputFilenamepassedforzipping-{inp_file_names}")

#createthezipfilefirstparameterpath/name,secondmode

print(f'***out_zip_fileis-{out_zip_file}')

zf=zipfile.ZipFile(out_zip_file,mode="w")

try:

forfile_to_writeininp_file_names:

#Addfiletothezipfile

#firstparameterfiletozip,secondfilenameinzip

print(f'***Processingfile{file_to_write}')

zf.write(file_to_write,file_to_write,compress_type=compression)

exceptFileNotFoundErrorase:

print(f'***Exceptionoccurredduringzipprocess-{e}')

finally:

#Don'tforgettoclosethefile!

zf.close()

4.我们将调用函数来创建两个csv文件,然后将其压缩。我们将在一个文件中使用赢得了1以上大满贯冠军的网球运动员数据-temporary_file1_for_zip.csv,在另一个文件中使用获得小于或等于1大满贯的网球运动员的数据suspended_file1_for_zip.csv。然后,我们将这两个文件都压缩为临时文件。

示例importzipfile

importio

importpandasaspd

file_name1="temporary_file1_for_zip.csv"

file_name2="temporary_file2_for_zip.csv"

file_name_list=[file_name1,file_name2]

zip_file_name="temporary.zip"

#dataforfile1

file_data_1="""

player,titles

Federer,20

Nadal,20

Djokovic,17

Murray,3

"""

#dataforfile2

file_data_2="""

player,titles

Theim,1

Zverev,0

Medvedev,0

Rublev,0

"""

#writethefile_datatofile_name

write_data_to_files(file_data_1,file_name1)

write_data_to_files(file_data_2,file_name2)

#zipthefile_nametozip_file_name

file_compress(file_name_list,zip_file_name)

示例

5.将以上步骤中讨论的所有内容放在一起。#Definethedata

#letuscreateazipfilewithasinglefile

importzipfile

importio

importpandasaspd

#Function:write_data_to_files

defwrite_data_to_files(inp_data,file_name):

"""

function:createacsvfilewiththedatapassedtothiscode

args:inp_data:datatobewrittentothetargetfile

file_name:targetfilenametostorethedata

return:none

assumption:Filetobecreatedandthiscodeareinsamedirectory.

"""

print(f"***Writingthedatato-{file_name}")

throwaway_storage=io.StringIO(inp_data)

withopen(file_name,'w')asf:

forlineinthrowaway_storage:

f.write(line)

#Function:file_compress

deffile_compress(inp_file_names,out_zip_file):

"""

function:file_compress

args:inp_file_names:listoffilenamestobezipped

out_zip_file:outputzipfile

return:none

assumption:Inputfilepathsandthiscodeisinsamedirectory.

"""

#SelectthecompressionmodeZIP_DEFLATEDforcompression

#orzipfile.ZIP_STOREDtojuststorethefile

compression=zipfile.ZIP_DEFLATED

print(f"***InputFilenamepassedforzipping-{inp_file_names}")

#createthezipfilefirstparameterpath/name,secondmode

print(f'***out_zip_fileis-{out_zip_file}')

zf=zipfile.ZipFile(out_zip_file,mode="w")

try:

forfile_to_writeininp_file_names:

#Addfiletothezipfile

#firstparameterfiletozip,secondfilenameinzip

print(f'***Processingfile{file_to_write}')

zf.write(file_to_write,file_to_write,compress_type=compression)

exceptFileNotFoundErrorase:

print(f'***Exceptionoccurredduringzipprocess-{e}')

finally:

#Don'tforgettoclosethefile!

zf.close()

#__main__program

if__name__=='__main__':

#Defineyourfilenameanddata

file_name1="temporary_file1_for_zip.csv"

file_name2="temporary_file2_for_zip.csv"

file_name_list=[file_name1,file_name2]

zip_file_name="temporary.zip"

file_data_1="""

player,titles

Federer,20

Nadal,20

Djokovic,17

Murray,3

"""

file_data_2="""

player,titles

Theim,1

Zverev,0

Medvedev,0

Rublev,0

"""

#writethefile_datatofile_name

write_data_to_files(file_data_1,file_name1)

write_data_to_files(file_data_2,file_name2)

#zipthefile_nametozip_file_name

file_compress(file_name_list,zip_file_name)***Writingthedatato-temporary_file1_for_zip.csv

***Writingthedatato-temporary_file2_for_zip.csv

***InputFilenamepassedforzipping-['temporary_file1_for_zip.csv','temporary_file2_for_zip.csv']

***out_zip_fileis-temporary.zip

***Processingfiletemporary_file1_for_zip.csv

***Processingfiletemporary_file2_for_zip.csv

输出结果

执行以上代码后,输出为在当前目录中创建了secondary_file1_for_zip.csv。

在当前目录中创建了临时文件2_for_zip.csv。

在当前目录中创建了临时文件。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。