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,就可以读取到了。

相关推荐
暮冬-  Gentle°7 分钟前
Python内存管理机制:垃圾回收与引用计数
jvm·数据库·python
阿贵---13 分钟前
使用PyQt5创建现代化的桌面应用程序
jvm·数据库·python
wertyuytrewm22 分钟前
高级爬虫技巧:处理JavaScript渲染(Selenium)
jvm·数据库·python
不是株28 分钟前
算 法
数据结构·python·算法
云姜.29 分钟前
LLM接入方式
python
阳光永恒73630 分钟前
Python零基础入门全套资料包免费分享 | 从0到1系统学习路线(含课件+源码+实战案例)
开发语言·python·学习·编程入门·python教程·编程学习·免费资料
紫丁香33 分钟前
pytest_自动化测试1
开发语言·python·功能测试·单元测试·pytest
酷酷的橙子34 分钟前
python 学习
python
Sakuraba Ema42 分钟前
Attention Residuals:把固定残差换成“跨层注意力”
python·llm·attention
独隅43 分钟前
Python 标准库 (Standard Library) 全面使用指南
android·开发语言·python