鱼C论坛

 找回密码
 立即注册
查看: 1712|回复: 12

[已解决]zipfile找不到目录

[复制链接]
发表于 2020-6-7 21:13:01 | 显示全部楼层 |阅读模式
30鱼币
本帖最后由 Teggi 于 2020-6-7 21:27 编辑

def writeAllFileToZip(absDir,zipFile):
    for f in os.listdir(absDir):
        absFile=os.path.join(absDir,f)
        if os.path.isdir(absFile):
            relFile=absFile[len(os.getcwd())+1:]
            zipFile.write(relFile)
            writeAllFileToZip(absFile,zipFile)
        else:
            relFile=absFile[len(os.getcwd())+1:]
            zipFile.write(relFile)
    return

zipFilePath=os.path.join(sys.path[0],"result_b.zip") #把叫RA的文件夹打包为result_b.zip
zipFile=zipfile.ZipFile(zipFilePath,"w",zipfile.ZIP_STORED)
absDir=os.path.join(sys.path[0],"RA")
cwd = os.getcwd()
os.chdir(os.path.dirname(absDir))
writeAllFileToZip(absDir,zipFile)
os.chdir(cwd)
print("压缩成功")

在自己电脑上运行正常
但是每次打包成EXE,放到其他电脑上运行就会在zipFile=zipfile.ZipFile(zipFilePath,"w",zipfile.ZIP_STORED) 这一句报错:

File "zipfile.py", line 1251, in__init__
FileNotFoundError: [Error2] No such file or directory: 'C:\\Users\\Chengyin\\AppData\\Local\\Temp\\_MEI191922\\base_library.zip\\result_b.zip'
请问有什么解决办法能让他在其他电脑上也能顺利运行
最佳答案
2020-6-7 21:13:02
这个要涉及到打包后的sys.path[0]的值多少了,写了一段代码测试:
import os,sys
print(sys.path[0])
print(os.getcwd())
input('查看目录')
直接运行后结果很正常,都是当前工作目录:
批注 2020-06-07 223656.png
然后打包后运行,结果:
批注 2020-06-07 223945.png
很明显,sys.path[0]指向了系统临时目录下的_MEI191802\base_library.zip

然后资源管理器看看,呃,是一个文件,不是目录,所以代码整合的路径在打包后运行时是错误的:
批注 2020-06-07 223416.png
所以,建议用os.getcwd()来取代sys.path[0],再打包运行就不会报错了。
IMG_4971.PNG

最佳答案

查看完整内容

这个要涉及到打包后的sys.path[0]的值多少了,写了一段代码测试: 直接运行后结果很正常,都是当前工作目录: 然后打包后运行,结果: 很明显,sys.path[0]指向了系统临时目录下的_MEI191802\base_library.zip 然后资源管理器看看,呃,是一个文件,不是目录,所以代码整合的路径在打包后运行时是错误的: 所以,建议用os.getcwd()来取代sys.path[0],再打包运行就不会报错了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-7 21:13:02 | 显示全部楼层    本楼为最佳答案   
这个要涉及到打包后的sys.path[0]的值多少了,写了一段代码测试:
import os,sys
print(sys.path[0])
print(os.getcwd())
input('查看目录')
直接运行后结果很正常,都是当前工作目录:
批注 2020-06-07 223656.png
然后打包后运行,结果:
批注 2020-06-07 223945.png
很明显,sys.path[0]指向了系统临时目录下的_MEI191802\base_library.zip

然后资源管理器看看,呃,是一个文件,不是目录,所以代码整合的路径在打包后运行时是错误的:
批注 2020-06-07 223416.png
所以,建议用os.getcwd()来取代sys.path[0],再打包运行就不会报错了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-7 21:16:22 | 显示全部楼层
在别的电脑上运行exe时候附带带上 result_a.zip 这个文件给别的电脑 放在同目录下试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-6-7 21:17:13 | 显示全部楼层
Twilight6 发表于 2020-6-7 21:16
传文件时候带上 result_a.zip 这个文件给别的电脑 放在同目录下试试

都带着,所有文件都是全的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-7 21:20:21 | 显示全部楼层
本帖最后由 Twilight6 于 2020-6-7 21:24 编辑
Teggi 发表于 2020-6-7 21:17
都带着,所有文件都是全的


把 zip 文件放在报错的这个绝对路径下 试试
C:\Users\Chengyin\AppData\Local\Temp\_MEI191922\base_library.zip
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-6-7 21:29:04 | 显示全部楼层
Twilight6 发表于 2020-6-7 21:20
把 zip 文件放在报错的这个绝对路径下 试试

但是这个zip是我打包的目标文件,我是要把一个叫RA的文件夹打包为result_b.zip文件,一开始是没有这个zip文件的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-7 21:30:45 | 显示全部楼层
Teggi 发表于 2020-6-7 21:29
但是这个zip是我打包的目标文件,我是要把一个叫RA的文件夹打包为result_b.zip文件,一开始是没有这个zip ...

可报错原因就是找不到你的result_a.zip文件
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-7 21:31:03 | 显示全部楼层
个人感觉写代码的时候都用相对路径,打包成exe的时候,把所有依赖文件都放在exe目录下
这样exe在别人那里也可以使用
如果代码里面都是绝对路径,在别人电脑上可能会出问题吧
我也才学 不知道这么做好不好
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-7 21:35:37 | 显示全部楼层
Teggi 发表于 2020-6-7 21:29
但是这个zip是我打包的目标文件,我是要把一个叫RA的文件夹打包为result_b.zip文件,一开始是没有这个zip ...

你检查下别人报错时候路径是不是报一样的?  实在不行 按照哪个路径来创建文件夹如何在选择打包文件试试?

在你电脑正常说明找的到你电脑的文件 而放他人电脑不行说明他人电脑路径不对把,按照报错的路径试着模拟创建文件夹下试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-6-7 21:37:15 | 显示全部楼层
Twilight6 发表于 2020-6-7 21:35
你检查下别人报错时候路径是不是报一样的?  实在不行 按照哪个路径来创建文件夹如何在选择打包文件试试 ...

那我试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-7 21:41:17 From FishC Mobile | 显示全部楼层
跟踪检查一下os.getcwd()和sys.path[0]吧,可以在代码中print出来,让其他电脑给你反馈一下print出来的路径是什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-6-7 22:48:36 | 显示全部楼层
txxcat 发表于 2020-6-7 22:46
这个要涉及到打包后的sys.path[0]的值多少了,写了一段代码测试:

直接运行后结果很正常,都是当前工作 ...

明白啦!感谢感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-7 22:54:04 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-20 20:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表