Python 板


LINE

版上诸位先进好 我是程式语言新手 目前边看书边自学PYTHON 目前的问题是想要试着用PYTHON解压缩档案 但是不知为何PYTHON一直读不到档案 我的程式码是 import zipfile files=zipfile.ZipFile("python.zip") 然後就出现错误讯息读不到档案 请问我到底做错什魔 我已经把档案放到出现的路径里头去 但是没用 而且错误讯息里头的路径是在lib 但是我已经有Lib所以资料夹名称会重复而行不通 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.161.225.32
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1551430854.A.013.html
1F:推 lajji: 後面加'r'再试一次 03/01 17:33
2F:→ lajji: files=zipfile.ZipFile("python.zip", "r") 03/01 17:33
3F:→ alubasteve: 我试过了,很抱歉没用,如果r前後有""的话 03/01 17:42
4F:→ alubasteve: 还是找不到python.zip,可是我已经在Lib里头放了 03/01 17:44
5F:→ alubasteve: 如果r没有"",则显示r没有被定义 03/01 17:44
6F:→ djshen: 没人跟你说问别人之前先把错误讯息贴上来吗 03/01 18:37
7F:推 lajji: 不然就是你zip档放错地方 请google绝对路径 相对路径 03/01 18:38
8F:→ alubasteve: 给djshen,多谢提醒,我怕错误讯息太长,反而眼花 03/01 19:07
9F:→ alubasteve: 给lajji,多谢你提醒,我改成在档名前追加绝对路径 03/01 19:08
10F:→ alubasteve: 然後就成了,所以问题是出在我的相对路径抓不到 03/01 19:10
11F:→ alubasteve: files=zipfile.ZipFile("c:\python\python.zip")即可 03/01 19:14
12F:→ gmccntzx1: 不用怕讯息太长让其他人眼花,善用线上服务如:codepad 03/01 19:27
13F:→ gmccntzx1: , pastebin, gist 都可以让你一次把大量的讯息传上来 03/01 19:28
14F:→ gmccntzx1: 你不给错误讯息的话,其他人可能还要花时间猜你实际上 03/01 19:28
15F:→ gmccntzx1: 遇到的问题是什麽,这样反而浪费大家时间又没效率,所 03/01 19:29
16F:→ gmccntzx1: 以贴个讯息,何乐不为? 03/01 19:29
17F:→ gmccntzx1: 而且,像是你碰到的这个问题,光是丢错误讯息最後一行 03/01 19:31
18F:→ gmccntzx1: 提到的 Exception 内容就可以略知一二罗 03/01 19:31
19F:→ alubasteve: Traceback (most recent call last): 03/01 20:42
20F:→ alubasteve: File "<pyshell#3>", line 1, in <module> 03/01 20:48
21F:→ alubasteve: files=zipfile.ZipFile("python.zip") 03/01 20:48
22F:→ alubasteve: File "C:\Users\user\AppData\Local\Programs\ 03/01 20:49
23F:→ alubasteve: \Python\Python37\lib\zipfile.py", line 1182, in __ 03/01 20:49
24F:→ alubasteve: self.fp = io.open(file, filemode) 03/01 20:50
25F:→ alubasteve: FileNotFoundError: [Errno 2] No such file 03/01 20:50
26F:→ alubasteve: or directory: 'python.zip' 03/01 20:51
27F:→ alubasteve: 抱歉我弄巧成拙,请各位过目我碰到的问题讯息 03/01 20:52
28F:→ djshen: python command怎麽下的 03/01 21:08
29F:→ alubasteve: import zipfile 03/01 21:44
30F:→ alubasteve: files=zipfile.ZipFile("python.zip") 03/01 21:45
31F:→ djshen: 喔我是指command line 03/01 22:41
32F:→ alubasteve: 给djshen,抱歉我不知道python command跟command line 03/01 22:45
33F:→ alubasteve: 的差异,可以请你告诉我吗 03/01 22:51
34F:→ djshen: 你是把code存在一个xx.py 然後用python xx.py执行? 03/01 23:09
35F:→ gmccntzx1: 看他上面个讯息有 `pyshell#3` ,应该是在 cmd 中直接 03/01 23:48
36F:→ gmccntzx1: 执行的 03/01 23:48
37F:→ gmccntzx1: 依原文来看,原 PO 应该是把读档的概念弄错。你要读档 03/01 23:55
38F:→ gmccntzx1: 时,必须先知道要被读取的档案的路径,之後在呼叫 open 03/01 23:56
39F:→ gmccntzx1: 或其他读档的指令时(如你现在要用的 zipfile )再把该 03/01 23:57
40F:→ gmccntzx1: 档的路径放进去,而不是纯粹写个档案名称就好。 03/01 23:57
41F:→ gmccntzx1: 如果还是不太清楚我所说的,你可以试试看用 03/01 23:58
42F:→ gmccntzx1: os.path.abspath() 去看你现在给的 'python.zip' 对於 03/01 23:59
43F:→ gmccntzx1: 目前程式所读到的路径是什麽。 03/01 23:59
44F:→ gmccntzx1: 举个例,假设目前 os.getcwd() 的结果是 'C:\User\foo' 03/02 00:02
45F:→ gmccntzx1: 那麽 os.path.abspath('python.zip') 所解析出的路径就 03/02 00:02
46F:→ gmccntzx1: 是 'C:\User\foo\python.zip' 03/02 00:02
47F:→ gmccntzx1: 所以如果实际上你的 python.zip 不在 C:\User\foo 底下 03/02 00:04
48F:→ gmccntzx1: 的话,那麽程式当然会读不到档案 03/02 00:04
49F:→ gmccntzx1: 而你要做的事情应该是把正确的档案路径传给 ZipFile , 03/02 00:06
50F:→ gmccntzx1: 而非把档案移到 '...\Python37\lib\' 底下 03/02 00:07
51F:→ alubasteve: 给gmccntzx1,我就是这样做,我改成 03/02 00:14
52F:→ alubasteve: import zipfile 03/02 00:14
53F:→ alubasteve: zip_file=zipfile.ZipFile("C:\python\python.zip") 03/02 00:15
54F:→ alubasteve: 追加绝对路径在档名之前之後就不会再出现错误讯息 03/02 00:22
55F:→ gmccntzx1: 收到,在你 19:14 的回应已经知道你解决了,我只是想 03/02 00:22
56F:→ gmccntzx1: 告诉你不用因为怕错误讯息太多而不跟着文章附上来 03/02 00:23
57F:→ alubasteve: 不会,很感谢你的热心解说 03/02 00:27
58F:→ alubasteve: 顺便问一句,我试着全解压缩python.zip,但是似乎只能 03/02 00:32
59F:→ alubasteve: 解压缩到原有路径C:\python,请问这样合理吗 03/02 00:34
60F:→ gmccntzx1: 参考官方文件 https://bit.ly/2Vos4hA ,你可以指定 03/02 00:38
61F:→ gmccntzx1: 参数 path 作为解压缩的目的地 03/02 00:39
62F:→ alubasteve: import zipfile 03/02 00:40
63F:→ alubasteve: zip_file=zipfile.ZipFile("C:\python\python.zip") 03/02 00:43
64F:→ alubasteve: zip_file.extractall("C:\python") 03/02 00:43
65F:→ alubasteve: zip_file.close() 03/02 00:43
66F:→ alubasteve: 上面没问题 ,但是第三行改成 03/02 00:46
67F:→ alubasteve: zip_file.extractall("C:\python\2") 就有问题 03/02 00:50
68F:→ alubasteve: Traceback (most recent call last): 03/02 00:50
69F:→ alubasteve: File "<pyshell#2>", line 1, in <module> 03/02 00:50
70F:→ alubasteve: zip_file.extractall("C:\python\2") 03/02 00:51
71F:→ alubasteve: File "C:\Users\user\AppData\Local\Programs\ 03/02 00:51
72F:→ alubasteve: \Python\Python37\lib\zipfile.py", line 1594, 03/02 00:52
73F:→ alubasteve: , in extractall 03/02 00:52
74F:→ alubasteve: self._extract_member(zipinfo, path, pwd) 03/02 00:53
75F:→ alubasteve: File "C:\Users\user\AppData\Local\Programs\ 03/02 00:53
76F:→ alubasteve: \Python37\lib\zipfile.py", line 1640, in _extract_ 03/02 00:54
77F:→ alubasteve: member 03/02 00:55
78F:→ alubasteve: os.makedirs(upperdirs) 03/02 00:55
79F:→ alubasteve: File "C:\Users\user\AppData\Local\Programs\ 03/02 00:56
80F:→ alubasteve: Python\Python37\lib\os.py", line 221, 03/02 00:56
81F:→ alubasteve: in makedirs 03/02 00:56
82F:→ alubasteve: mkdir(name, mode) 03/02 00:57
83F:→ alubasteve: OSError: [WinError 123] 档案名称、目录名称 03/02 00:57
84F:→ alubasteve: 或磁碟区标签语法错误。: 'C:\\python\x02' 03/02 00:57
85F:→ gmccntzx1: 用一般字串表示路径时, `\` 要改为 `\\` ,也就是说 03/02 01:02
86F:→ gmccntzx1: 你要写成 zip_file.extractall("C:\\python\\2") 03/02 01:03
87F:→ gmccntzx1: 或着你可以改用 raw string,也就是改成 03/02 01:03
88F:→ gmccntzx1: zip_file.extractall(r"C:\python\2") 03/02 01:03
89F:→ gmccntzx1: 详细差异可以 google python raw string 03/02 01:04
90F:→ gmccntzx1: 另外,关於路径的串接,可以再看看 os.path.join() 和 03/02 01:05
91F:→ gmccntzx1: pathlib (for python 3) 03/02 01:06
92F:→ gmccntzx1: 然後,你如果不想用 pastebin/codepad 贴文字的话,可 03/02 01:07
93F:→ gmccntzx1: 以改成萤幕截图後上传到 imgur 再贴上来 03/02 01:08
94F:→ gmccntzx1: 因为看你一行一行贴感觉很累... 03/02 01:09
95F:→ alubasteve: https://pastebin.com/2s74QxGR 请问这样方便吗 03/02 07:46
96F:→ alubasteve: 不好意思我是第一次听说pastebin ,所以不大敢用 03/02 07:50
97F:→ alubasteve: 刚才试用才知道还不算难 03/02 07:51
98F:→ gmccntzx1: 上面说「看你一行一行贴感觉很累」是在说:你花好几分 03/02 10:07
99F:→ gmccntzx1: 钟把讯息慢慢贴上来,不会累吗? 所以才跟你说有什麽 03/02 10:07
100F:→ gmccntzx1: 现有的工具可以让你更方便啦 XD 03/02 10:07
101F:→ gmccntzx1: 然後重点是,指解压缩到另一个路径的问题解决了吗? 03/02 10:08
102F:→ Raymond0710: 路径的\ 改成\\ 03/02 10:19
103F:→ Raymond0710: 让别人了解你的问题很重要 辛苦推文大大 03/02 10:21
104F:→ alubasteve: 感谢gmccntzx1开示,我两种路径的方法试过都OK了 03/02 13:27
105F:→ alubasteve: 也试过直接解压缩在新路径资料夹上 03/02 13:29
106F:→ alubasteve: 也谢谢前文诸位网友指教,让我可以快速抓到盲点在哪 03/02 13:30
107F:→ alubasteve: 我上午出门所以回覆的比较晚,请gmccntzx1多包涵 03/02 13:33
108F:→ gmccntzx1: 不用在意,问题有解决就好! 03/02 17:24







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:iOS站内搜寻

TOP