2019python面試題-用python刪除一個文件,刪除一個非空目錄


刪除一個文件

os.remove()
方法用於刪除指定路徑的文件。如果指定的路徑是一個目錄,將拋出OSError。
import os

# 刪除一個文件
my_file = 'D:/MyDocument/sc/ee.txt'
if os.path.exists(my_file):
    # 若存在,則刪除
    os.remove(my_file)
    print('刪除%s成功' %my_file)
else:
    print('no such file:%s' % my_file)

 

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

# 刪除一個文件
my_file = 'D:/MyDocument/sc/ee.txt'
if os.path.exists(my_file):
    # 若存在,則刪除
    os.unlink(my_file)
    print('刪除%s成功' %my_file)
else:
    print('no such file:%s' % my_file)


刪除目錄
os.rmdir() 方法用於刪除指定路徑的目錄。僅當這文件夾是空的才可以, 否則, 拋出OSError。
import os

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

# 刪除目錄
os.rmdir('ee')

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

運行結果:
目錄為: ['ee', 'fun.py']
移除后目錄為 ['fun.py'] 
>>> 
 
        
os.removedirs() 方法用於遞歸刪除目錄。
像rmdir(), 如果子文件夾成功刪除, removedirs()才嘗試它們的父文件夾,直到拋出一個error(它基本上被忽略,因為它一般意味着你文件夾不為空)。
import os

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

# 刪除目錄
os.removedirs('ee/ff/')

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

運行結果:
目錄為: ['ee', 'fun.py']
移除后目錄為 ['fun.py']
os.walk() 方法用於通過在目錄樹中游走輸出在目錄中的文件名,向上或者向下。
os.walk() 方法是一個簡單易用的文件、目錄遍歷器,可以幫助我們高效的處理文件、目錄方面的事情。

語法 walk()方法語法格式如下: os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]]) 參數: top -- 是你所要遍歷的目錄的地址, 返回的是一個三元組(root,dirs,files)。 1、root 所指的是當前正在遍歷的這個文件夾的本身的地址 2、dirs 是一個 list ,內容是該文件夾中所有的目錄的名字(不包括子目錄) 3、files 同樣是 list , 內容是該文件夾中所有的文件(不包括子目錄) topdown --可選,為 True,則優先遍歷 top 目錄,否則優先遍歷 top 的子目錄(默認為開啟)。

      如果 topdown 參數為 True,walk 會遍歷top文件夾,與top 文件夾中每一個子目錄。 onerror -- 可選,需要一個 callable 對象,當 walk 需要異常時,會調用。 followlinks -- 可選,如果為 True,則會遍歷目錄下的快捷方式(linux 下是軟連接 symbolic link )實際所指的目錄(默認關閉),
         如果為 False,則優先遍歷 top 的子目錄。

import os

for root, dirs, files in os.walk('D:\MyDocument\sc\ee', topdown=False):
    for name in files:
        print(os.path.join(root, name))
        os.remove(os.path.join(root, name))
    for name in dirs:
        print(os.path.join(root, name))
        os.rmdir(os.path.join(root, name))

運行結果:
D:\MyDocument\sc\ee\ff.txt
D:\MyDocument\sc\ee\ff
>>> 

import shutil

shutil通常是最后一個目錄不為空,或者是權限不對,或者是你當前運行的目錄就在那個目錄,總之被占用,被鎖,沒有權限,不為空都刪除不了。
rmtree(path, ignore_errors=False, onerror=None): 移除文檔樹,將文件夾目錄刪除

ignore_errors:是否忽略錯誤,默認False
onerror:定義錯誤處理函數,需傳遞一個可執行的處理函數,該處理函數接收三個參數:函數、路徑和excinfo
>>> import shutil
>>> shutil.rmtree('D:\MyDocument\sc\ee')

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM