python中的shutil模塊
shutil模塊對文件和文件集合提供了許多高級操作,特別是提供了支持文件復制和刪除的函數。
目錄和文件操作
- shutil.copyfileobj(fsrc, fdst[, length]):拷貝文件內容到另一個文件,可以指定拷貝的大小。
# 拷貝test1的內容到test2
>>> shutil.copyfileobj(open('test1'),open('test2','w'))
- shutil.copyfile(src, dst):拷貝文件,不包含元數據。
- shutil.copymode(src, dst):僅拷貝文件權限,對文件內容、用戶和組不影響。
- shutil.copystat(src, dst):僅拷貝文件權限、最后訪問時間、最后修改時間,對文件內容、用戶和組不影響。
- shutil.copy(src, dst):拷貝文件數據和權限,不含文件的創建時間和修改時間。
- shutil.copy2(src, dst):拷貝文件,包含元數據
- shutil.ignore_patterns(*patterns):忽略指定的文件,通常和copytree配合使用
- shutil.copytree(src, dst, symlinks=False, ignore=None, copy_function=copy2, ignore_dangling_symlinks=False):遞歸復制目錄及其子目錄的文件和狀態信息。
# 遞歸復制Python3目錄中的文件到Python4中,其中忽略以點m4和py結尾的文件。
>>> shutil.copytree('Python3','Python4',ignore=shutil.ignore_patterns('*.m4','*.py'))
- shutil.rmtree(path):遞歸刪除目錄
- shutil.move(src, dst, copy_function=copy2):遞歸移動文件或者目錄,如mv
- shutil.disk_usage(path):以元組的形式返回一個磁盤統計信息(total,used,free)
- shutil.chown(path, user=None, group=None):改變path的用戶和組
- shutil.which(cmd):返回執行cmd的絕對路徑,類似於shell中的which cmd
歸檔操作
- shutil.make_archive(base_name, format[, root_dir[, base_dir[, verbose[, dry_run[, owner[, group[, logger]]]]]]]):打包文件或者壓縮文件,如tar,zip。
- base_name:打包后的文件名
- format:壓縮格式,如:zip,tar,gztar,bztar,xztar
- root_dir:打包的根目錄
- base_dir:要進行壓縮的源文件或者目錄,root_dir和base_dir both默認為當前目錄
- dry_run: 如果為True,打包文件將不會創建,但是會進行日志記錄
- owner,group:指定用戶和組,默認是當前環境用戶和組
- logger:用於記錄日志,通常是logging.Logger的一個實例
- shutil.get_archive_formats():返回支持的歸檔格式的列表
- shutil.unpack_archive(filename[, extract_dir[, format]]):解壓縮一個歸檔文件
- filename:壓縮文檔的絕對路徑
- extract_dir:解壓縮路徑,默認當前目錄
- format:壓縮格式,默認使用文件后綴名的格式
- shutil.get_unpack_formats():返回支持解壓縮格式的列表