python內置方法刪除目錄(空目錄與非空目錄)及文件
1、os.remove(file_path):刪除文件
#PPTV是文件夾,xen.txt是文件 >>> os.remove('PPTV') Traceback (most recent call last): File "<pyshell#9>", line 1, in <module> os.remove('PPTV') PermissionError: [WinError 5] 拒絕訪問。: 'PPTV' >>> os.remove('xen.txt') >>> os.unlink('xen.txt')
注:
file_path如果是目錄則拋出異常
remove() 同 unlink() 的功能是一樣的
2、os.removedirs(path):遞歸刪除目錄
目錄必須為空目錄,若目錄被刪除,removedirs則會繼續刪除父目錄;子目錄未刪除成功則報錯
例子:
os.removedirs(“foo/bar/ba”) 將首先刪除 “foo/bar/ba”目錄,如果foo/bar是空,則會繼續刪除foo/bar,foo若為空則會繼續刪除foo
如果子目錄不能成功刪除,將 拋出異常
3、os.rmdir(path):刪除目錄
刪除目錄 path,要求path必須是個空目錄,否則拋出OSError錯誤
4、遞歸刪除目錄和文件
1、通過shutil.rmtree(path)刪除:
>>> print(subprocess.getoutput('tree pytest')) 卷 工作 的文件夾 PATH 列表 卷序列號為 00000002 2C55:35CD E:\CHENGD_FTP_CLIENT\MODULE\PYTEST ├─.idea └─test_dirs >>> shutil.rmtree('e:\\chengd_ftp_client\\module\\pytest') >>> print(subprocess.getoutput('tree pytest')) 卷 工作 的文件夾 PATH 列表 卷序列號為 00000002 2C55:35CD E:\CHENGD_FTP_CLIENT\MODULE\PYTEST 無效的路徑 - \CHENGD_FTP_CLIENT\MODULE\PYTEST 沒有子文件夾
2、通過os.walk方法刪除:
#!/usr/bin/env python3 # -*- coding: utf-8 -*- import os import subprocess obj_dir = 'E:\chengd_ftp_client\module\rmtest' for root, dirs, files in os.walk(obj_dir, topdown=False): for name in files: print(name) os.remove(os.path.join(root, name)) for name in dirs: print(name) os.rmdir(os.path.join(root, name))