如何运行我的“program2.py”并关闭“program1.py”?

-3 投票
1 回答
32 浏览
提问于 2025-04-13 14:18

我正在写一个简单的Python代码,main.py里有一个按钮,点击这个按钮就会打开main_newFile.py。不过,我搞不清楚为什么它找不到我的第二个文件。

我用os.system("main_newFile.py")来启动这个程序,然后用sys.exit()来关闭main.py。但是,os.system却提示找不到我的文件。如果你看看图片,你会发现main_newFile应该和main.py在同一个文件夹里。我可以确认它们在同一个文件夹,因为我还有一些背景图片也能加载到我的tkinter里。

有没有人知道哪里出问题了,或者有没有更好的方法来启动第二个Python文件?谢谢!

1 个回答

0

要解决你的问题,可以使用 os.system('./main_newFile.py')

之所以 os.system('main_newFile.py') 不管用,是因为在Linux系统中,.(当前目录)默认不在程序查找路径里。

还有一个更好的解决办法,这个方法避免使用 os.system(因为它一般不安全,因为会通过shell来执行):

import subprocess
import sys

def start_newFile():
  subprocess.call((sys.executable, 'main_newFile.py'))
  sys.exit()

sys.executable 是当前的Python解释器,比如说 /usr/bin/python

还有一个更好的方法,它会在和 main.py 相同的目录下查找 main_newFile.py

import os
import os.path
import subprocess
import sys

def start_newFile():
  subprocess.call((
      sys.executable,
      os.path.join(os.path.dirname(__file__), 'main_newFile.py')))
  sys.exit()

撰写回答