Использование python3.8 в macOS
У меня есть функция с циклом while внутри, и я также импортирую два других файла .py из того же каталога, которые содержат нужные мне функции.
import Scraper
import Creator
def main(index=1):
operation = True
while operation == True:
try:
Scraper.scraper()
Creator.Auto(index)
except Exception as e:
print(e)
operation = False
return
Без вызова main()
, если я запущу свою программу, она все равно запустит функцию main(). Это также происходит, когда я вызываю main()
, программа затем запускается с использованием цикла while, но только после выполнения функции один раз до начала цикла while. (т.е. функция запустится на один раз больше, чем ожидалось)
Я не сталкивался с такой проблемой раньше. Любые советы по исправлению этого?
Ничто стандартное не будет выполняться main
автоматически. Если вам не нужны операторы import
для воспроизведения проблемы, избавьтесь от них и объясните, как именно вы выполняете скрипт. Если вам нужны один или оба оператора import
, содержимое импортируемых модулей имеет значение.
Можете ли вы показать код из Scraper и Creator (при условии, что это то, что вы сделали). Если они вызовут main в этом файле py, это может привести к этому
Возможно ли, что у вас есть такой код в одном из этих двух импортов?: if __name__ == "__main__": main()
Функция traceback.print_stack
печатает текущую трассировку стека. Если вы назовете это main
, вы увидите, что называется main
.
@chepner, я считаю, что ты в корне проблемы. Я, на самом деле, просто идиот. Оба файла импорта вызывают функции из соответствующих файлов. Всякий раз, когда я импортирую оба модуля в этот main.py, также будут вызываться любые вызовы функций из модулей.
Чтобы ответить на ваш вопрос, нам нужно увидеть содержимое Scraper.py
и Creator.py
Попробуйте проверить другие файлы .py. Однажды у меня была такая же проблема, когда другие мои файлы .py содержали вызовы функций. Когда вы импортируете файл .py и он содержит вызов функции, эта функция может быть вызвана автоматически.
У вас есть код внутри двух других файлов, который не находится внутри функции?