python文件打包找不到文件路径

引用:【将Python代码打包成exe可执行文件】 https://www.bilibili.com/video/BV1P24y1o7FY/?p=4\&share_source=copy_web\&vd_source=d5811f31a0635dfc69a182c7bf1adb8b

在代码中,我们想读取文件a,一般使用如下方法。

python 复制代码
import os

dir = os.path.dirname(os.path.abspath(__file__))

假设主文件为main.py,那我们需要把文件a的放置和main.py同一目录即可。

1、当打包成多文件的时候,将文件a放在main.exe的同一目录,即可执行成功

2、当打包成单文件的时候,将文件a放在main.exe的同一目录,却会执行失败

这是为什么呢?因为main.exe先解压出main.py到本地电脑的临时目录,而文件a并不在临时目录,在和main.exe一样的目录。

这时,就需要使用sys.argv了。如图,第一张打印出可执行文件的路径,第二张打印的为文件名(这里我还没太理解)

如上代码直接执行,打印出的是python解释器后面的路径

将如上代码打包之后,会打印出可执行文件所在的目录路径。

使用写法二之后,dir的值,就是可执行文件所在的目录。

python 复制代码
import os
import sys

-- 写法二
dir = os.path.dirname(os.path.realpath(sys.argv[0]))

这时程序就会在可执行文件目录下查找文件a,就可以读取到了。

相关推荐
布局呆星12 小时前
面向对象中的封装-继承-多态
开发语言·python
sxy_976112 小时前
AX86u官方固件温度监控(CPU,WIFI芯片)
python·docker·curl·nc·nas·温度·ax86u
诗词在线12 小时前
适合赞美风景的诗词名句汇总
python·风景
2401_8414956412 小时前
【LeetCode刷题】删除链表的倒数第N个结点
数据结构·python·算法·leetcode·链表·遍历·双指针
Non-existent98713 小时前
地理空间数据处理指南 | 实战案例+代码TableGIS
人工智能·python·数据挖掘
xj75730653313 小时前
python中的序列化
服务器·数据库·python
郝学胜-神的一滴13 小时前
机器学习特征选择:深入理解移除低方差特征与sklearn的VarianceThreshold
开发语言·人工智能·python·机器学习·概率论·sklearn
却道天凉_好个秋13 小时前
Tensorflow数据增强(一):图片的导入与显示
人工智能·python·tensorflow
ONExiaobaijs13 小时前
Java jdk运行库合集
java·开发语言·python
Pyeako13 小时前
深度学习--PyTorch框架&优化器&激活函数
人工智能·pytorch·python·深度学习·优化器·激活函数·梯度爆炸与消失