如何执行另一个 python 文件然后关闭现有文件?
How to execute another python file and then close the existing one?
我正在开发一个需要调用另一个 python 脚本并截断当前文件执行的程序。我尝试使用 os.close() 函数做同样的事情。如下:
def call_otherfile(self):
os.system("python file2.py") #Execute new script
os.close() #close Current Script
使用上面的代码我可以打开第二个文件但无法关闭当前文件one.I知道我犯了一个愚蠢的错误但无法弄清楚它是什么。
使用 subprocess module which is the suggested way to do that kind of stuff (execute new script, process), in particular look at Popen for starting a new process and to terminate the current program you can use sys.exit().
为此,您需要直接生成一个子进程。这可以通过 more low-level fork and exec 模型来完成,就像 Unix 中的传统一样,或者使用 higher-level 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
,它告诉内核您的程序不再需要文件描述符。它不应该用于退出程序。
如果你不想定义你自己的函数,你总是可以像 Popen(['python', 'file2.py'])
一样直接调用 subprocess.Popen
它非常简单,使用 os.startfile 然后使用 exit() 或 sys.exit() 它将工作 100%
#file 1 os.startfile("file2.py") exit()
我正在开发一个需要调用另一个 python 脚本并截断当前文件执行的程序。我尝试使用 os.close() 函数做同样的事情。如下:
def call_otherfile(self):
os.system("python file2.py") #Execute new script
os.close() #close Current Script
使用上面的代码我可以打开第二个文件但无法关闭当前文件one.I知道我犯了一个愚蠢的错误但无法弄清楚它是什么。
使用 subprocess module which is the suggested way to do that kind of stuff (execute new script, process), in particular look at Popen for starting a new process and to terminate the current program you can use sys.exit().
为此,您需要直接生成一个子进程。这可以通过 more low-level fork and exec 模型来完成,就像 Unix 中的传统一样,或者使用 higher-level 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
,它告诉内核您的程序不再需要文件描述符。它不应该用于退出程序。
如果你不想定义你自己的函数,你总是可以像 Popen(['python', 'file2.py'])
subprocess.Popen
它非常简单,使用 os.startfile 然后使用 exit() 或 sys.exit() 它将工作 100%
#file 1 os.startfile("file2.py") exit()