Есть ли способ самостоятельно инициализировать функцию вне класса? - PullRequest
1 голос
/ 14 мая 2019

У меня есть этот фрагмент кода, который должен запускаться каждый раз, когда я запускаю программу (она очищает папку):

import os

def ClearOutputFolder():
    ''' Clear 'Output/' directory '''
    for file in os.listdir('Output'):
        file_path = os.path.join('Output', file)
        try:
            if os.path.isfile(file_path):
                os.unlink(file_path)
        except Exception as e:
            print(e)

ClearOutputFolder()

Мне было интересно, есть ли менее неловкий способ автоматического вызова функции, чем ее определение и последующий вызов позже.

Я пытался поместить __init__ вне класса, просто чтобы посмотреть, но, как и ожидалось, он действовал как обычная функция и должен был вызываться.

import os

def __init__():
    delete_stuff                # this runs but does nothing on its own

Это не вопрос жизни и смерти, очевидно, мне было просто любопытно, есть ли простое решение, о котором я не знаю.

Спасибо.

отредактировано для уточнения

1 Ответ

0 голосов
/ 14 мая 2019

если вы вызываете функцию в блоке if __name__ == '__main__, она автоматически выполнится при запуске пакета.

import os

def ClearOutputFolder():
    ''' Clear 'Output/' directory '''
    for file in os.listdir('Output'):
        file_path = os.path.join('Output', file)
        try:
            if os.path.isfile(file_path):
                os.unlink(file_path)
        except Exception as e:
            print(e)

def main():
    ClearOutputFolder()


if __name__ == '__main__':

    main()

если вы хотите, чтобы звонок происходил при импорте, вы можете сделать так:

import os

def ClearOutputFolder():
    ''' Clear 'Output/' directory '''
    for file in os.listdir('Output'):
        file_path = os.path.join('Output', file)
        try:
            if os.path.isfile(file_path):
                os.unlink(file_path)
        except Exception as e:
            print(e)

ClearOutputFolder()   # this call is executed upon importing the package
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...