Для этого вам нужно будет запустить подпроцесс напрямую.Это может быть сделано либо с более низкоуровневой вилкой и моделью exec, как это принято в Unix, либо с высокоуровневым API, таким как subprocess
.
import subprocess
import sys
def spawn_program_and_die(program, exit_code=0):
"""
Start an external program and exit the script
with the specified return code.
Takes the parameter program, which is a list
that corresponds to the argv of your command.
"""
# Start the external program
subprocess.Popen(program)
# We have started the program, and can suspend this interpreter
sys.exit(exit_code)
spawn_program_and_die(['python', 'path/to/my/script.py'])
# Or, as in OP's example
spawn_program_and_die(['python', 'file2.py'])
ТакжеПросто заметка о вашем исходном коде.os.close
соответствует системному вызову Unix close
, который сообщает ядру, что вашей программе вам больше не нужен дескриптор файла.Он не должен использоваться для выхода из программы.
Если вы не хотите определять свою собственную функцию, вы всегда можете просто вызвать subprocess.Popen
напрямую, как Popen(['python', 'file2.py'])