Python之shutil模塊

對比os模塊的函數和shutil模塊中包含的函數,會發現它們有一些重複。那麼爲什麼會存在兩個模塊提供相同功能的情況呢?這就涉及到了標準庫模塊的定位問題了。os模塊是對操作系統的接口進行封裝,主要作用是跨平臺,shutil模塊包含複製、移動、重命名、刪除文件目錄以及壓縮包的函數,主要作用是管理文件和目錄,因此它們並不衝突,並且是互補的關係,對於常見的文件操作,shutil更易於使用。在shutil裏面沒有提供相應功能的情況下再使用os模塊下的函數。

博文大綱:

  • 1、複製文件
  • 2、複製目錄
  • 3、移動目錄或文件(重命名)
  • 4、刪除目錄
  • 5、更改屬主及屬組
  • 6、查找命令絕對路徑
  • 7、獲取磁盤使用空間
  • 8、歸檔和解包

1、複製文件

shutil.copy('src','dst') 

2、複製目錄

shutil.copytree('src','dst')

3、移動目錄或文件(重命名)

shutil.move('src','dst')

4、刪除目錄

shutil.rmtree('path')

5、更改屬主及屬組

shutil.chown('path','user','group') 

6、查找命令絕對路徑

shutil.which('cmd') 

7、獲取磁盤使用空間

total, used, free = shutil.disk_usage("path")
print("當前磁盤共: %iGB, 已使用: %iGB, 剩餘: %iGB"%(total / 1073741824, used / 1073741824, free / 1073741824))

注:默認單位是字節,所以轉換爲了GB,公式如下:
1KB= 1024字節,1MB= 1024KB,1GB= 1024MB; 所以:1G=1073741824字節。也就是上面爲什麼要除以1073741824

8、歸檔和解包

1)獲取當前系統支持的解包文件格式(後綴)

shutil.get_unpack_formats()                          

2)獲取當前系統支持的壓縮文件格式(後綴)

shutil.get_archive_formats()

3)歸檔壓縮

shutil.make_archive('test','gztar','./')    #將當前目錄下所有文件打包爲test.tar.gz

參數解釋如下(從左往右開始):

  • base_name: 壓縮包的文件名,也可以是壓縮包的路徑。只是文件名時,則保存至當前目錄,否則保存至指定路徑。 如:/Users/wupeiqi/www =>保存至/Users/wupeiqi/
  • gztar: 壓縮包種類,可選值有:“zip”, “tar”, “bztar”,“gztar”
  • ./: 要壓縮的文件夾路徑(默認當前目錄)

4)解檔壓縮

shutil.unpack_archive(filename,extract_dir=None,format=None)
# 栗子:
shutil.unpack_archive('test.tar.gz','/opt/tlv')
  • filename:文件路徑;
  • extract_dir:解壓至的文件夾路徑。文件夾可以不存在,會自動生成;
  • format:解壓格式,默認爲None,會根據擴展名自動選擇解壓格式。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章