如何执行另一个python文件,然后关闭现有的文件?

时间:2019-07-03 12:33:29

标签: python python-2.7 file python-os

我正在开发一个程序,该程序需要调用另一个python脚本并截断当前文件的执行。我尝试使用os.close()函数执行相同的操作。如下:

def call_otherfile(self):
    os.system("python file2.py") #Execute new script 
    os.close() #close Current Script 

使用上面的代码,我可以打开第二个文件,但无法关闭当前文件。我知道我很愚蠢,但是无法弄清楚它是什么。

2 个答案:

答案 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()