在Pyhton內置模塊中,os模塊提供了對目錄和文件的一般操作,shutil模塊作為補充,提供了移動,復制,壓縮,解壓等操作,zipfile模塊提供了對zip文件格式的靈活操作,本文主要以一些簡單的小例子,簡述shutil模塊及zipfile模塊的簡單使用,僅供學習分享使用,如有不足之處,還請指正。
什么是shutil?
shutil模塊是python標准庫中提供的,主要用來做文件和目錄的拷貝,移動,刪除等,還可以做文件的和目錄的壓縮,解壓等操作。
什么是zipfile?
Python 中 zipfile 模塊提供了對 zip 壓縮文件的一系列操作。
導入模塊
如果要使用shutil及zipfile進行相關的操作,首先要導入模塊,如下所示:
1 import shutil as su 2 import zipfile as zf
shutil簡單應用
1. 復制文件
將文件從一個目錄復制到另一個目錄,並且復制文件時可以改變文件名稱。
1 # copy文件,將文件從一個地方復制到另外一個地方,如果是相對路徑,則相對代碼所在的目錄 2 su.copyfile(r'movie/gangtai/1.txt',r'movie/gangtai/1_copy.txt')
2. 復制目錄
復制目錄內容到新目錄,如下所示:
1 # copy目錄,將目錄中的內容【不包含目錄】拷貝到新的目錄,如目標目錄不存在 ,則新增,如果存在,則報錯 2 su.copytree('movie/gangtai','電影/港台') # 默認全部內容拷貝
3. 自定義復制目錄
復制目錄時,默認是內容全部復制,也可以定義忽略一些文件,如下所示:
1 # 忽略一些格式的文件不拷貝 2 su.copytree('movie/gangtai','電影/港台',ignore=su.ignore_patterns('*.mp3','*.html'))
4. 生成壓縮文件
1 # base_name:壓縮包的路徑和名字,format:格式 root_dir:要壓縮的文件或目錄 2 su.make_archive('movie/gt','zip','movie/gangtai')
5. 解壓文件
1 # 解壓縮 filename:壓縮包路徑 extract_dir:要解壓到的路徑 2 su.unpack_archive('movie/gt.zip',extract_dir='電影/gangtai')
zipfile簡單應用
如果需要更加靈活的進行解壓縮,可以使用zipfile模塊進行操作。
1. 文件壓縮
可以將不同目錄下的文件,放在一個壓縮文件中,如下所示:
1 # zipfile提供壓縮方式更靈活 2 z1 = zf.ZipFile(file='d:/a.zip', mode='w') 3 z1.write('movie/gangtai/1.txt') 4 z1.write('電影/港台/1.txt') 5 z1.write('電影/港台/1_copy.txt') 6 z1.close()
2. 文件解壓
解壓后的文件,會安裝壓縮文件的結構進行展示,如下所示:
1 # 解壓 2 z2 = zf.ZipFile(file='d:/a.zip',mode='r') 3 z2.extractall(path='d:/a') 4 z2.close()
遞歸函數
以下通過遞歸實現5的階乘,如下所示:
1 # 遞歸求階乘 2 def factorial(n): 3 if n == 1: 4 return 1 5 else: 6 return n * factorial(n - 1) 7 8 9 n = 5 10 f = factorial(n) 11 print('%(n)d的階乘等於%(f)d' % {'n': n, 'f': f})
備注
行宮
【作者】元稹
寥落古行宮,宮花寂寞紅。
白頭宮女在,閑坐說玄宗。