我正在开发一个程序,该程序需要调用另一个python脚本并截断当前文件的执行。我尝试使用os.close()函数执行相同的操作。如下:
def call_otherfile(self):
os.system("python file2.py") #Execute new script
os.close() #close Current Script
使用上面的代码,我可以打开第二个文件,但无法关闭当前文件。我知道我很愚蠢,但是无法弄清楚它是什么。
答案 0 :(得分:2)
为此,您将需要直接产生一个子流程。可以使用Unix中传统的较低级别的fork和exec模型,也可以使用较高级别的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'])
答案 1 :(得分:0)
使用subprocess模块,这是进行此类操作(执行新脚本,进程)的建议方法,尤其是查看Popen以启动新进程并终止当前程序您可以使用sys.exit()。