Булево значение объектов в Python

Я удивлен, что никто не упомянул о потрясающем 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)
34
задан Alois Mahdal 21 May 2013 в 09:49
поделиться

2 ответа

Обратитесь к документации 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()
39
ответ дан 27 November 2019 в 16:20
поделиться

В 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__ .

45
ответ дан 27 November 2019 в 16:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: