1. 程式人生 > >(轉)Python3之shutil模組

(轉)Python3之shutil模組

原文:https://www.cnblogs.com/wang-yc/p/5625046.html

一. 簡介

  shutil 是高階的檔案,資料夾,壓縮包處理模組。

 

二. 使用

shutil.copyfileobj(fsrc, fdst[, length])
將檔案內容拷貝到另一個檔案中

1 2 3 import
  shutil    shutil.copyfileobj( open ( 'old.xml' , 'r' ),  open ( 'new.xml' 'w' ))

shutil.copyfile(src, dst)
拷貝檔案

1 shutil.copyfile( 'f1.log' 'f2.log' )

shutil.copymode(src, dst)


僅拷貝許可權。內容、組、使用者均不變

1 shutil.copymode( 'f1.log' 'f2.log' )

shutil.copystat(src, dst)
僅拷貝狀態的資訊,包括:mode bits, atime, mtime, flags

1 shutil.copystat( 'f1.log' 'f2.log' )

shutil.copy(src, dst)
拷貝檔案和許可權

1 shutil.copy( 'f1.log' 'f2.log' )

shutil.copy2(src, dst)
拷貝檔案和狀態資訊

1 shutil.copy2( 'f1.log' 'f2.log' )

shutil.ignore_patterns(*patterns)
shutil.copytree(src, dst, symlinks=False, ignore=None)
遞迴的去拷貝資料夾

1 2 3 shutil.copytree( 'folder1' 'folder2' , ignore = shutil.ignore_patterns( '*.pyc' 'tmp*' ))   shutil.copytree( 'f1' 'f2' , symlinks = True , ignore = shutil.ignore_patterns( '*.pyc' 'tmp*' ))

shutil.rmtree(path[, ignore_errors[, onerror]])
遞迴的去刪除檔案

1 shutil.rmtree( 'folder1' )

shutil.move(src, dst)
遞迴的去移動檔案,它類似mv命令,其實就是重新命名。

1 shutil.move( 'folder1' 'folder3' )

shutil.make_archive(base_name, format,...)

建立壓縮包並返回檔案路徑,例如:zip、tar

建立壓縮包並返回檔案路徑,例如:zip、tar

  • base_name: 壓縮包的檔名,也可以是壓縮包的路徑。只是檔名時,則儲存至當前目錄,否則儲存至指定路徑,
    如:www                        =>儲存至當前路徑
    如:/Users/wupeiqi/www =>儲存至/Users/wupeiqi/
  • format: 壓縮包種類,“zip”, “tar”, “bztar”,“gztar”
  • root_dir: 要壓縮的資料夾路徑(預設當前目錄)
  • owner: 使用者,預設當前使用者
  • group: 組,預設當前組
  • logger: 用於記錄日誌,通常是logging.Logger物件
1 2 3 4 5 6 7 8 #將 /Users/wupeiqi/Downloads/test 下的檔案打包放置當前程式目錄 import  shutil ret  =  shutil.make_archive( "wwwwwwwwww" 'gztar' , root_dir = '/Users/wupeiqi/Downloads/test' )         #將 /Users/wupeiqi/Downloads/test 下的檔案打包放置 /Users/wupeiqi/目錄 import  shutil ret  =  shutil.make_archive( "/Users/wupeiqi/wwwwwwwwww" 'gztar' , root_dir = '/Users/wupeiqi/Downloads/test' )

  

shutil 對壓縮包的處理是通過呼叫ZipFile 和 TarFile兩個模組來進行的。

1 2 3 4 5 6 7 8 9 10 11 12 import  zipfile   # 壓縮 =  zipfile.ZipFile( 'laxi.zip' 'w' ) z.write( 'a.log' ) z.write( 'data.data' ) z.close()   # 解壓 =  zipfile.ZipFile( 'laxi.zip' 'r' ) z.extractall() z.close()
1 2 3 4 5 6 7 8 9 10 11 12 import  tarfile   # 壓縮 tar  =  tarfile. open ( 'your.tar' , 'w' ) tar.add( '/Users/wupeiqi/PycharmProjects/bbs2.log' , arcname = 'bbs2.log' ) tar.add( '/Users/wupeiqi/PycharmProjects/cmdb.log' , arcname = 'cmdb.log' ) tar.close()   # 解壓 tar  =  tarfile. open ( 'your.tar' , 'r' ) tar.extractall()   # 可設定解壓地址 tar.close()