python Завершение процесса
Есть проект.
В проекте есть папка tests
, где лежат отдельные файлы тестов и run_tests
, который их всех запускает функцией main
:
def run_script(script):
subprocess.Popen(["python3", "-Wignore", "-m", script])
def main():
for file in os.listdir('tests'):
run_script('tests.{}'.format(file.split('.')[0]))
if __name__ == "__main__":
main()
Запускается из терминала командой python -m tests.run_tests
.
Все файлы отрабатывают корректно, но в терминале процесс не завершается.
А надо так (это после ручного нажатия ctrl + c
):
Добавлял в код sys.exit()
, sys.exit(0)
, exit()
, quit()
(два последних плохие варианты) - не помогает.
Что делать?
update
Добавил print(script)
в run_script
перед subprocess...
. Получилось так:
Ответы (1 шт):
Автор решения: Garp
→ Ссылка
Неправильно использовался subprocess
.
Так всё работает:
def run_script(script):
script1 = 'python3 -Wignore -m tests.{}'.format(script)
subprocess.call(script1, shell=True)
def main():
for file in os.listdir('tests'):
run_script(file.split('.')[0])
if __name__ == "__main__":
main()