2010-01-17 105 views
1

當在Python編碼,我經常需要編寫這樣一個功能:提示的文件/目錄中刪除

def delete_dir(dir_name): 

    if os.path.exists(dir_name): 
     reply = raw_input("Delete directory "+dir_name+"? [y/[n]] ") 
     if reply=='y': 
      os.system('rm -r '+dir_name) 
     else: 
      print "Aborting..." 
      sys.exit() 

這基本上只是一個提示用戶仔細檢查一個刪除命令(我還有一個用於刪除文件)。鑑於包含在標準庫中的大量Python模塊,我想知道這樣的事情是否已經存在?

+1

你或許應該怎麼做,如果回答[「Y」,「Y」,「是」]: – 2010-01-17 15:59:25

+0

儘量不要可能的情況下調用系統程序。它不可移植 – ghostdog74 2010-01-18 00:33:55

+0

只需注意在Python 3中,raw_input()被[renamed](https://docs.python.org/3/whatsnew/3.0.html#builtins)輸入()。 – Yannis 2016-04-06 14:28:31

回答

1

刪除目錄,使用os模塊os.rmdir(),os.removedirs()。或shutil.rmtree()。​​檢查文檔以獲取更多信息

+0

我同意這些可以替換os.system('rm -r'+ dir_name)行,但我正在尋找的是一個例程,會自動給用戶提示,仔細檢查目錄是否應該刪除。 – astrofrog 2010-01-17 15:36:15

0

好吧,您可以將此功能保存在模塊中並在其他模塊中重複使用,這樣您的問題就可以解決!

2

它不是Python的東西,但如果您繼續使用os.system()進行刪除調用,則可以將-i參數傳遞給rm。該手冊頁解釋了它:

-i      編輯前提示每一個去除

:我剛剛看了一遍你的代碼,它看起來像你只是整個刪除過程之前提示一次,而不是每個文件。你可能會感興趣的-I標誌來代替:

-I      提示一次刪除多個三個文件,或當 遞歸移除之前。侵擾程度較低 比-i,同時還給予保護 對大多數錯誤