2016-02-17 10 views
0

嘿傢伙我試圖做一個簡單的程序,清理directorys收集用戶輸入。 AKA用戶輸入「E:」刪除,「F:」刪除。但我不能讓它工作使用shutil。需要刪除用戶輸入選擇的多個導航器中的文件。 shutil.rmtree()

我似乎找不到一種方式來存儲用戶輸入的方式,讓shutil使用它刪除!

我真的很新的python和一般編程,所以即時通訊可能做一些愚蠢的錯誤。

編輯:我需要它,這樣用戶輸入被存儲在列表的形式,然後我可以運行shutil刪除存儲在列表中的所有directoris

import shutil 
DeleteThis = {} 

def DirectoryToDelete(): 
    DirectoryToEnter = input('Enter Filepath of directory you want to delete: ') 
    DeleteThis.append(DirectoryToEnter) 
    print (DeleteThis) 

shutil.rmtree(DeleteThis) 
+0

爲什麼要使用(對於這個問題或列表)一組,如果你只刪除一個目錄?另外'append'方法用於列表。集合使用add –

回答

0

使用字符串shutil和檢查目錄與os.path.isdir

import shutil 
import os.path 

while True: 
    directory = input('Enter Filepath of directory you want to delete: ') 
    if os.path.isdir(directory): 
     shutil.rmtree(directory) 
     print "Directory was deleted!" 
    else: 
     print "Bad directory" 
+0

另外,如果你使用的是linux,你可以通過在'input'(和import readline)之前插入'readline.parse_and_bind(「tab:complete」)'來獲得輸入的tab完成。 –

+0

想要修改您的答案以在一個輸入中添加多個目錄或以某種方式退出沒有'KeyboardInterrupt'的循環?另外'input'是python-3.x,而print語句是python-2.x –

0

JRazors的修改回答:

import shutil 
import os.path 
import readline 

#allow tab completion in input 
readline.parse_and_bind("tab: complete") 

delete_this = input('Enter Directories you want to delete separated by comma: ') 
for d in delete_this.split(','): 
    d=d.strip() 
    if os.path.isdir(d): 
     shutil.rmtree(d) 
     print("{} deleted".format(d)) 

這看起來通過以逗號分隔的文本來查找要刪除的目錄。

使用例如

python delete_dir.py 
Enter Directories you want to delete separated by comma: fo<tab> 
foo1/  foo2/  foo3.txt 
Enter Directories you want to delete separated by comma: foo1,foo2 
foo1 deleted 
foo2 deleted 
相關問題