【BUG记录】关于os.chdir()改变路径导致的FileNotFound报错
问题背景
这几天在做大创项目,要写一个画图的GUI界面,有一个功能需要调用main.py同目录下的running文件夹下的cal.exe文件。
经过大佬指点,代码为:
def calculation(self):
"""调用exe文件计算"""os.chdir('running') # 调用同目录下子文件夹里的exe文件Cal = 'Cal.exe'os.system(Cal)
问题来了,因为计算的要求,我要调用两次calculation函数,第一次执行,没问题,画图也OK,第二次执行,就报错了,报错内容为:
FileNotFoundError: [WinError 2] 系统找不到指定的文件 'running'
问题思考
报错代码可以很轻易定位到问题就出在第二次的os.chdir()
。
当时虽然是大佬告诉我这么做可以,但是可能也没想到我会多次调用这个exe文件。
在观察该代码的结构、以及查询该代码的作用时,脑子里灵光一闪,找不到running文件夹是不是因为此时main.py
程序在os.chdir()
的作用下进入了running文件夹还没出来呢?
running文件夹下可没有同名的running子文件夹~
推测合理,直接测试!
问题解决
思路:如果os.chdir()
可以改变程序的执行路径的话,那么只需要记住最开始的程序路径,每次调用完同目录下子文件夹内的exe文件后再用os跳会原目录即可。
import osclass demo:def __init__(self):"""初始化"""self.origin_path = os.getcwd() # 用getcwd记住源程序路径,方便后续跳回def calculation(self):"""调用exe文件计算"""os.chdir('running') # 调用同目录下子文件夹里的exe文件Cal = 'Cal.exe'os.system(Cal)os.chdir(self.origin_path) # 跳回源程序目录
结果:运行成功,没有报错(〃‘▽’〃)
思考
这个bug本质上不难排除,但是重点还是在于提升对于路径变化的敏感度,
也算加强了对相对路径这一概念的认识。
【BUG记录】关于os.chdir()改变路径导致的FileNotFound报错相关推荐
- 记录springBoot项目使用jar包中的mapper报错问题
记录springBoot项目使用jar包中的mapper报错问题 背景 双数据源的实现 启动时报找不到对应的service 启动报mapper找不到 启动报no sqlsessionfactory 启 ...
- SAP S4HANA 账户组的配置里'Int.Std.Grping'选项没勾选导致ABAP程序报错
SAP S4HANA 账户组的配置里'Int.Std.Grping'选项没勾选导致ABAP程序报错 BP,试图创建一个新的vendor code, 角色是ZGM001, Grouping是G001, ...
- 【错误记录】Mac 中 IntelliJ IDEA 运行 Python 程序报错 ( pip 21.0 will drop support for Python 2.7 in January 20 )
文章目录 一.报错信息 二.解决方案 一.报错信息 在 [错误记录]Mac 中 IntelliJ IDEA 运行 Python 程序报错 ( No module named 'threadpool' ...
- 重写Readable接口read()方法 传入Scanner导致的BufferOverflowException报错
在Main方法里产生随机单词, 导致异常BufferOverflowException , 首先思考的是每次调用read()方法应该会传入一个新的CharBuffer吧(实际并不是, 后面说) // ...
- 因 inode 不足导致数据库登陆报错相关问题
墨墨导读:本文来自墨天轮用户"JiekeXu"投稿,墨天轮主页:https://www.modb.pro/u/434,主要分享用数据泵导入数据时发生空间不足的问题 "No ...
- 升级tomcat导致静态资源报错400
先上结论:tomcat7.0-106之后的版本(包括8.5xx之后的版本,只是下了个较新的测试)改了DefualtServerlet类checkIfNoneMatch方法中的比较逻辑,导致用java中 ...
- Sql Server 因为触发器问题导致数据库更新报错“在触发器执行过程中引发了错误,批处理已中止”的问题处理...
在维护一个非常旧的项目时,由于该项目版本已经非常老了,而且在客户现场运行的非常稳定,更要命的是本人目前没有找到该项目的代码,为了处理一个新的需求而且还不能修改程序代码,于是决定从数据库入手,毕竟该项目 ...
- 【错误记录】Mac 中 IntelliJ IDEA 运行 Python 程序报错 ( “Python“ 因为出现问题而无法打开 )
文章目录 一.报错信息 二.解决方案 一.报错信息 先安装了 Pytnon3.10.0 版本 , 然后有安装了 Python3.6.3 版本 , 安装完成后 , IntelliJ IDEA 中就出现如 ...
- 【错误记录】Mac 中 IntelliJ IDEA 运行 Python 程序报错 ( No module named ‘numpy‘ )
文章目录 一.报错信息 二.解决方案 一.报错信息 编译时 , 报错如下信息 : No module named 'numpy' 二.解决方案 pip install numpy Try to run ...
最新文章
- Know about Oracle RAC Heartbeat
- kail利用msf工具对MS12-020漏洞进行渗透测试
- 2019年web前端全集_2019年最佳30+ Web工具
- set_union()和set_intersection()用法:原来并集和交集这样求!
- COGS2353[HZOI 2015] 有标号的DAG计数 I
- Spring最新下载教程
- Java Swing MySQL图书管理系统
- idea运行SSM项目配置tomcat及启动
- 裂变新玩法 2022年京东双十一红包如何领取?
- RE写作Issue问题题库分析与提纲
- 管桩的弹性模量计算公式_400管桩单桩水平承载力特征值计算书
- 面板模型进行熵值法分析
- CVTE软件C语言面试经验,CVTE软件技术支持面试总结
- jsp学习 jdbc连接数据库实现登录注册
- 区块链核心技术演进之路-算法演进
- 写在迷茫痛苦之后的三十岁
- java 线程阻止_Java:在特定队列大小后阻止提交的ExecutorService
- 【904. 水果成篮】
- (四) appium-desktop 脚本录制常用AW使用介绍
- Python基础之:Python的数据结构