使用os.system()调用Python脚本未执行文件写入的问题排查
问题根因
os.system()的逻辑是调用系统默认shell执行传入的命令字符串,你当前代码直接传入.py脚本的绝对路径,相当于让shell自行决定用什么程序打开该类型文件。
直接手动运行called_script.py能正常写文件,是因为你当前交互桌面环境配置了.py文件和Python解释器的打开关联,但os.system()拉起的shell执行环境受系统权限、安装配置(比如Windows下安装Python时未勾选全局关联.py格式、当前运行脚本的用户权限和安装Python的用户权限不一致)影响,没有拿到这个文件关联配置,根本没有启动Python解释器执行目标脚本,自然不会触发写文件的逻辑。
修复方案
- 调用时明确指定Python解释器路径,不要依赖系统文件关联,示例代码如下:
import os # 请将前面的python.exe路径替换为你本地实际的Python解释器安装路径 os.system("C:/Python310/python.exe C:/Users/user/Documents/code/test/called_script.py")
- 如果已经将Python解释器路径加入系统全局PATH环境变量,也可以简写为
os.system("python C:/Users/user/Documents/code/test/called_script.py"),但优先使用解释器绝对路径,避免多版本Python环境下调用到错误版本。 - 可以通过打印
os.system()的返回值验证执行状态:执行成功返回值为0,之前调用失败时会返回非0的错误码,可快速定位命令执行异常。
内容的提问来源于stack exchange,提问作者user2334659
相关产品推荐
相关产品推荐

