虽然rmtree很有用,但它并不等价:如果您尝试删除单个文件(而rm -f不删除),则会出错(请参见下面的示例)。
要解决这个问题,您需要检查您的路径是文件还是目录,并相应地采取行动。像这样的事情应该能起到作用:import os
import shutil
def rm_r(path):
if os.path.isdir(path) and not os.path.islink(path):
shutil.rmtree(path)
elif os.path.exists(path):
os.remove(path)
注意:此函数不处理字符或块设备(需要使用stat模块)。
关于rm -f和Python的shutils.rmtree之间差异的示例$ mkdir rmtest
$ cd rmtest/
$ echo "stuff" > myfile
$ ls
myfile
$ rm -rf myfile
$ ls
$ echo "stuff" > myfile
$ ls
myfile
$ python
Python 2.7.1+ (r271:86832, Apr 11 2011, 18:13:53)
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import shutil
>>> sh