首頁 > 軟體

python刪除檔案、清空目錄的實現方法

2020-09-23 15:00:34

Python os.remove() 方法

os.remove() 方法用於刪除指定路徑的檔案。如果指定的路徑是一個目錄,將丟擲OSError。

在Unix, Windows中有效

以下範例演示了 remove() 方法的使用:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import os, sys

# 列出目錄
print "目錄為: %s" %os.listdir(os.getcwd())

# 移除
os.remove("aa.txt")

# 移除後列出目錄
print "移除後 : %s" %os.listdir(os.getcwd())

執行以上程式輸出結果為:

目錄為:
[ 'a1.txt','aa.txt','resume.doc' ]
移除後 :
[ 'a1.txt','resume.doc' ]

Python os.removedirs() 方法

os.removedirs() 方法用於遞迴刪除目錄。像rmdir(), 如果子資料夾成功刪除, removedirs()才嘗試它們的父資料夾,直到丟擲一個error(它基本上被忽略,因為它一般意味著你資料夾不為空)。

以下範例演示了 removedirs() 方法的使用:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import os, sys

# 列出目錄
print "目錄為: %s" %os.listdir(os.getcwd())

# 移除
os.removedirs("/test")

# 列出移除後的目錄
print "移除後目錄為:" %os.listdir(os.getcwd())

執行以上程式輸出結果為:

目錄為:
[  'a1.txt','resume.doc','a3.py','test' ]
移除後目錄為:
[  'a1.txt','resume.doc','a3.py' ]

Python os.rmdir() 方法

os.rmdir() 方法用於刪除指定路徑的目錄。僅當這資料夾是空的才可以, 否則, 丟擲OSError。

以下範例演示了 rmdir() 方法的使用:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import os, sys

# 列出目錄
print "目錄為: %s"%os.listdir(os.getcwd())

# 刪除路徑
os.rmdir("mydir")

# 列出重新命名後的目錄
print "目錄為: %s" %os.listdir(os.getcwd()) 

執行以上程式輸出結果為:

目錄為:
[  'a1.txt','resume.doc','a3.py','mydir' ]
目錄為:
[  'a1.txt','resume.doc','a3.py' ]

Python os.unlink() 方法

os.unlink() 方法用於刪除檔案,如果檔案是一個目錄則返回一個錯誤。

以下範例演示了 unlink() 方法的使用:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import os, sys

# 列出目錄
print "目錄為: %s" %os.listdir(os.getcwd())

os.unlink("aa.txt")

# 刪除後的目錄
print "刪除後的目錄為 : %s" %os.listdir(os.getcwd()) 

執行以上程式輸出結果為:

目錄為:
[ 'a1.txt','aa.txt','resume.doc']
刪除後的目錄為 :
[ 'a1.txt','resume.doc' ]

其他的總結

1、remove() 同 unlink() 的功能是一樣的

在Windows系統中,刪除一個正在使用的檔案,將丟擲異常。在Unix中,目錄表中的記錄被刪除,但檔案的儲存還在。

#使用os.unlink()和os.remove()來刪除檔案
#!/user/local/bin/python2.7
# -*- coding:utf-8 -*-
import os
my_file = 'D:/text.txt'
if os.path.exists(my_file):
 #刪除檔案,可使用以下兩種方法。
 os.remove(my_file)
 #os.unlink(my_file)
else:
 print 'no such file:%s'%my_file 

2、遞迴刪除目錄和檔案的方法(類似DOS命令DeleteTree):

程式碼如下:

import os
for root, dirs, files in os.walk(top, topdown=False):
 for name in files:
  os.remove(os.path.join(root, name))
 for name in dirs:
  os.rmdir(os.path.join(root, name)) 

3、Python清空指定資料夾下所有檔案的方法: 

 這個需求很簡單:需要在執行某些程式碼前清空指定的資料夾,如果直接用os.remove(),可能出現因資料夾中檔案被佔用而無法刪除,解決方法也很簡單,先強制刪除資料夾,再重新建同名資料夾即可:

import shutil 
shutil.rmtree('要清空的資料夾名') 
os.mkdir('要清空的資料夾名') 

注:可參考這裡對shutil模組的介紹:https://www.jb51.net/article/110329.htm

如果想把一個檔案從一個資料夾移動到另一個資料夾,並同時重新命名,用shutil也很簡單:

shutil.move('原資料夾/原檔名','目標資料夾/目標檔名')

4、python 刪除非空資料夾

一般刪除檔案時使用os庫,然後利用os.remove(path)即可完成刪除,如果刪除空資料夾則可使用os.removedirs(path)即可,
 但是如果需要刪除整個資料夾,且資料夾非空時使用os.removedirs(path)就會報錯了,此時可以使用shutil庫,該庫為python內建庫,是一個對檔案及資料夾高階操作的庫,可以與os庫互補完成一些操作,如資料夾的整體複製,行動資料夾,對檔案重新命名等。

import os
import shutil
os.remove(path) #刪除檔案
os.removedirs(path) #刪除空資料夾
shutil.rmtree(path) #遞迴刪除資料夾

參考文獻:

1、https://blog.csdn.net/muwinter/article/details/77196261 2018.5.25
 2、https://blog.csdn.net/qysh123/article/details/51923606 2018.5.25
 3、http://www.runoob.com/python/os-unlink.html 2018.5.25
 4、http://www.runoob.com/python/os-rmdir.html 2018.5.25
 5、http://www.runoob.com/python/os-removedirs.html 2018.5.25
 6、http://www.runoob.com/python/os-remove.html 2018.5.25

到此這篇關於python刪除檔案、清空目錄的實現方法的文章就介紹到這了,更多相關python刪除檔案、清空目錄內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com