问题背景

这几天在做大创项目,要写一个画图的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报错相关推荐

  1. 记录springBoot项目使用jar包中的mapper报错问题

    记录springBoot项目使用jar包中的mapper报错问题 背景 双数据源的实现 启动时报找不到对应的service 启动报mapper找不到 启动报no sqlsessionfactory 启 ...

  2. SAP S4HANA 账户组的配置里'Int.Std.Grping'选项没勾选导致ABAP程序报错

    SAP S4HANA 账户组的配置里'Int.Std.Grping'选项没勾选导致ABAP程序报错 BP,试图创建一个新的vendor code, 角色是ZGM001, Grouping是G001, ...

  3. 【错误记录】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' ...

  4. 重写Readable接口read()方法 传入Scanner导致的BufferOverflowException报错

    在Main方法里产生随机单词, 导致异常BufferOverflowException , 首先思考的是每次调用read()方法应该会传入一个新的CharBuffer吧(实际并不是, 后面说) // ...

  5. 因 inode 不足导致数据库登陆报错相关问题

    墨墨导读:本文来自墨天轮用户"JiekeXu"投稿,墨天轮主页:https://www.modb.pro/u/434,主要分享用数据泵导入数据时发生空间不足的问题 "No ...

  6. 升级tomcat导致静态资源报错400

    先上结论:tomcat7.0-106之后的版本(包括8.5xx之后的版本,只是下了个较新的测试)改了DefualtServerlet类checkIfNoneMatch方法中的比较逻辑,导致用java中 ...

  7. Sql Server 因为触发器问题导致数据库更新报错“在触发器执行过程中引发了错误,批处理已中止”的问题处理...

    在维护一个非常旧的项目时,由于该项目版本已经非常老了,而且在客户现场运行的非常稳定,更要命的是本人目前没有找到该项目的代码,为了处理一个新的需求而且还不能修改程序代码,于是决定从数据库入手,毕竟该项目 ...

  8. 【错误记录】Mac 中 IntelliJ IDEA 运行 Python 程序报错 ( “Python“ 因为出现问题而无法打开 )

    文章目录 一.报错信息 二.解决方案 一.报错信息 先安装了 Pytnon3.10.0 版本 , 然后有安装了 Python3.6.3 版本 , 安装完成后 , IntelliJ IDEA 中就出现如 ...

  9. 【错误记录】Mac 中 IntelliJ IDEA 运行 Python 程序报错 ( No module named ‘numpy‘ )

    文章目录 一.报错信息 二.解决方案 一.报错信息 编译时 , 报错如下信息 : No module named 'numpy' 二.解决方案 pip install numpy Try to run ...

最新文章

  1. Know about Oracle RAC Heartbeat
  2. kail利用msf工具对MS12-020漏洞进行渗透测试
  3. 2019年web前端全集_2019年最佳30+ Web工具
  4. set_union()和set_intersection()用法:原来并集和交集这样求!
  5. COGS2353[HZOI 2015] 有标号的DAG计数 I
  6. Spring最新下载教程
  7. Java Swing MySQL图书管理系统
  8. idea运行SSM项目配置tomcat及启动
  9. 裂变新玩法 2022年京东双十一红包如何领取?
  10. RE写作Issue问题题库分析与提纲
  11. 管桩的弹性模量计算公式_400管桩单桩水平承载力特征值计算书
  12. 面板模型进行熵值法分析
  13. CVTE软件C语言面试经验,CVTE软件技术支持面试总结
  14. jsp学习 jdbc连接数据库实现登录注册
  15. 区块链核心技术演进之路-算法演进
  16. 写在迷茫痛苦之后的三十岁
  17. java 线程阻止_Java:在特定队列大小后阻止提交的ExecutorService
  18. 【904. 水果成篮】
  19. (四) appium-desktop 脚本录制常用AW使用介绍
  20. Python基础之:Python的数据结构

热门文章

  1. Postgres-XL 简析
  2. 程序员的瓶颈是如何产生的(上)
  3. webpack学习之 style-loader / css-loader
  4. 程序员的三大优点:懒惰、急躁和傲慢
  5. github工具之OA综合利用python
  6. 小苹果蹿红背后的网络营销思考
  7. 中国有机微量矿物质天然饲料市场趋势报告、技术动态创新及市场预测
  8. 【计算机毕业设计】师生交流平台
  9. 【PATB1041】考试座位号(题解+拓展)
  10. 经典PID控制器的缺陷