Я удивлен, что никто не упомянул о потрясающем pathlib
, чтобы сделать эту работу.
Если вы хотите удалить только файлы в каталоге, это может быть один переводчик
from pathlib import Path
[f.unlink() for f in Path("/path/to/folder").glob("*") if f.is_file()]
Для рекурсивного удаления каталогов вы можете написать что-то вроде этого:
from pathlib import Path
from shutil import rmtree
for path in Path("/path/to/folder").glob("**/*"):
if path.is_file():
path.unlink()
elif path.is_dir():
rmtree(path)
Обратитесь к документации Python для __ nonzero __
.
class foo(object):
def __nonzero__( self) :
return self.bar % 2 == 0
def a(foo):
if foo:
print "spam"
else:
print "eggs"
def main():
myfoo = foo()
myfoo.bar = 3
a(myfoo)
if __name__ == "__main__":
main()
В Python <3.0:
Вы должны использовать __ ненулевое значение __
для достижения желаемого. Это метод, который автоматически вызывается Python при оценке объекта в логическом контексте. Он должен возвращать логическое значение, которое будет использоваться в качестве значения для оценки.
EG:
class Foo(object):
def __init__(self, bar) :
self.bar = bar
def __nonzero__(self) :
return self.bar % 2 == 0
if __name__ == "__main__":
if (Foo(2)) : print "yess !"
В Python => 3.0:
То же самое, за исключением того, что метод был переименован в гораздо более очевидный __ bool__
.