Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 需要从用户输入选择的多个目录中删除文件。shutil.rmtree()_Python_Python 3.x_Shutil - Fatal编程技术网

Python 需要从用户输入选择的多个目录中删除文件。shutil.rmtree()

Python 需要从用户输入选择的多个目录中删除文件。shutil.rmtree(),python,python-3.x,shutil,Python,Python 3.x,Shutil,嘿,伙计们,我正在尝试制作一个简单的程序来清理用户输入收集的目录。AKA用户输入“E:”用于删除,输入“F:”用于删除。但我不能让它工作使用舒特尔 我似乎找不到一种方法来存储用户输入,让shutil使用它来删除 我对python和编程非常陌生,所以我可能犯了一些愚蠢的错误 编辑:我需要它,以便用户输入以列表的形式存储,然后我可以运行shutil删除列表中存储的所有目录 import shutil DeleteThis = {} def DirectoryToDelete(): Dire

嘿,伙计们,我正在尝试制作一个简单的程序来清理用户输入收集的目录。AKA用户输入“E:”用于删除,输入“F:”用于删除。但我不能让它工作使用舒特尔

我似乎找不到一种方法来存储用户输入,让shutil使用它来删除

我对python和编程非常陌生,所以我可能犯了一些愚蠢的错误

编辑:我需要它,以便用户输入以列表的形式存储,然后我可以运行shutil删除列表中存储的所有目录

import shutil
DeleteThis = {}

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

shutil.rmtree(DeleteThis)

将字符串用于shutil并使用以下内容检查目录:


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
python delete_dir.py
输入要删除的目录,以逗号分隔:fo
foo1/foo2/foo3.txt
输入要删除的目录,以逗号分隔:foo1、foo2
foo1已删除
foo2已删除

如果只删除一个目录,为什么要使用集合(或列表)?另外,
append
方法也用于列表。Sets use ADDLOW,如果您使用linux,您可以通过插入
readline来完成输入上的制表符。在
input
(和import readline)之前解析和绑定(“制表符:完成”)
。是否要修改您的答案,以便在一个输入中添加多个目录,或者以某种方式退出循环,而无需
键盘中断
?另外,
input
是python-3.x,而print语句是python-2.x
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