2010-01-17 108 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,同时还给予保护 对大多数错误