Python程序中通过os.system调用脚本:PC正常运行笔记本仅开代码问题求助
解决os.system运行Python脚本在笔记本仅打开代码窗口的问题
我之前也碰到过一模一样的问题!这大概率是你的笔记本电脑把.py文件的默认打开方式设成了代码编辑器(比如VS Code、Notepad++之类的),而不是Python解释器,导致os.system调用时只是打开了代码窗口,没真正运行脚本。给你几个靠谱的解决方案:
方案一:直接指定Python解释器执行(最稳妥)
放弃依赖系统的文件关联,直接调用Python解释器来运行脚本,这样不管系统关联是什么都能正常执行:
import os # 基础写法,根据你的Python版本用python或python3 os.system("python theName.py") # 或者用python3 # os.system("python3 theName.py")
如果不确定当前环境的Python路径,用sys.executable获取当前脚本使用的Python解释器路径,兼容性拉满:
import os import sys # 用当前程序的Python解释器运行目标脚本 os.system(f"{sys.executable} theName.py")
方案二:修复系统的.py文件关联(Windows系统)
如果想彻底解决文件关联的问题,以后直接运行.py文件也能执行,可以这么做:
- 右键点击任意
.py文件,选择「打开方式」→「选择其他应用」 - 勾选「始终使用此应用打开.py文件」
- 找到你的Python安装目录下的
python.exe(一般在C:\Users\你的用户名\AppData\Local\Programs\Python\PythonXX路径里),选中它并确认 - 之后再运行
os.system("theName.py")就会正常执行脚本了
方案三:改用subprocess模块(更推荐的现代写法)
os.system其实是比较老旧的API,Python官方更推荐用subprocess模块,它功能更强大,还能轻松实现异步线程式执行:
import subprocess import sys # 异步运行目标脚本,不阻塞当前程序 process = subprocess.Popen([sys.executable, "theName.py"]) # 如果需要等待脚本执行完再继续,用run方法 # subprocess.run([sys.executable, "theName.py"], check=True)
subprocess.Popen会直接启动一个新进程运行脚本,完全符合你线程方式执行的需求,还能避免文件关联带来的问题。
另外补充一点:如果你的笔记本上Python没添加到系统PATH,直接打python可能会报错,这时候用sys.executable就完美解决了,因为它指向的是当前正在运行的这个Python解释器的路径。
内容的提问来源于stack exchange,提问作者0Interest
相关产品推荐
相关产品推荐

