[問題] 請問解壓縮檔案要如何讀取?

看板Python作者 (poorguy)時間5年前 (2019/03/01 17:00), 編輯推噓2(20106)
留言108則, 5人參與, 5年前最新討論串1/1
版上諸位先進好 我是程式語言新手 目前邊看書邊自學PYTHON 目前的問題是想要試著用PYTHON解壓縮檔案 但是不知為何PYTHON一直讀不到檔案 我的程式碼是 import zipfile files=zipfile.ZipFile("python.zip") 然後就出現錯誤訊息讀不到檔案 請問我到底做錯什魔 我已經把檔案放到出現的路徑裡頭去 但是沒用 而且錯誤訊息裡頭的路徑是在lib 但是我已經有Lib所以資料夾名稱會重複而行不通 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.161.225.32 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1551430854.A.013.html

03/01 17:33, 5年前 , 1F
後面加'r'再試一次
03/01 17:33, 1F

03/01 17:33, 5年前 , 2F
files=zipfile.ZipFile("python.zip", "r")
03/01 17:33, 2F

03/01 17:42, 5年前 , 3F
我試過了,很抱歉沒用,如果r前後有""的話
03/01 17:42, 3F

03/01 17:44, 5年前 , 4F
還是找不到python.zip,可是我已經在Lib裡頭放了
03/01 17:44, 4F

03/01 17:44, 5年前 , 5F
如果r沒有"",則顯示r沒有被定義
03/01 17:44, 5F

03/01 18:37, 5年前 , 6F
沒人跟你說問別人之前先把錯誤訊息貼上來嗎
03/01 18:37, 6F

03/01 18:38, 5年前 , 7F
不然就是你zip檔放錯地方 請google絕對路徑 相對路徑
03/01 18:38, 7F

03/01 19:07, 5年前 , 8F
給djshen,多謝提醒,我怕錯誤訊息太長,反而眼花
03/01 19:07, 8F

03/01 19:08, 5年前 , 9F
給lajji,多謝你提醒,我改成在檔名前追加絕對路徑
03/01 19:08, 9F

03/01 19:10, 5年前 , 10F
然後就成了,所以問題是出在我的相對路徑抓不到
03/01 19:10, 10F

03/01 19:14, 5年前 , 11F
files=zipfile.ZipFile("c:\python\python.zip")即可
03/01 19:14, 11F

03/01 19:27, 5年前 , 12F
不用怕訊息太長讓其他人眼花,善用線上服務如:codepad
03/01 19:27, 12F

03/01 19:28, 5年前 , 13F
, pastebin, gist 都可以讓你一次把大量的訊息傳上來
03/01 19:28, 13F

03/01 19:28, 5年前 , 14F
你不給錯誤訊息的話,其他人可能還要花時間猜你實際上
03/01 19:28, 14F

03/01 19:29, 5年前 , 15F
遇到的問題是什麼,這樣反而浪費大家時間又沒效率,所
03/01 19:29, 15F

03/01 19:29, 5年前 , 16F
以貼個訊息,何樂不為?
03/01 19:29, 16F

03/01 19:31, 5年前 , 17F
而且,像是你碰到的這個問題,光是丟錯誤訊息最後一行
03/01 19:31, 17F

03/01 19:31, 5年前 , 18F
提到的 Exception 內容就可以略知一二囉
03/01 19:31, 18F

03/01 20:42, 5年前 , 19F
Traceback (most recent call last):
03/01 20:42, 19F

03/01 20:48, 5年前 , 20F
File "<pyshell#3>", line 1, in <module>
03/01 20:48, 20F

03/01 20:48, 5年前 , 21F
files=zipfile.ZipFile("python.zip")
03/01 20:48, 21F

03/01 20:49, 5年前 , 22F
File "C:\Users\user\AppData\Local\Programs\
03/01 20:49, 22F

03/01 20:49, 5年前 , 23F
\Python\Python37\lib\zipfile.py", line 1182, in __
03/01 20:49, 23F

03/01 20:50, 5年前 , 24F
self.fp = io.open(file, filemode)
03/01 20:50, 24F

03/01 20:50, 5年前 , 25F
FileNotFoundError: [Errno 2] No such file
03/01 20:50, 25F

03/01 20:51, 5年前 , 26F
or directory: 'python.zip'
03/01 20:51, 26F

03/01 20:52, 5年前 , 27F
抱歉我弄巧成拙,請各位過目我碰到的問題訊息
03/01 20:52, 27F

03/01 21:08, 5年前 , 28F
python command怎麼下的
03/01 21:08, 28F

03/01 21:44, 5年前 , 29F
import zipfile
03/01 21:44, 29F

03/01 21:45, 5年前 , 30F
files=zipfile.ZipFile("python.zip")
03/01 21:45, 30F

03/01 22:41, 5年前 , 31F
喔我是指command line
03/01 22:41, 31F

03/01 22:45, 5年前 , 32F
給djshen,抱歉我不知道python command跟command line
03/01 22:45, 32F

03/01 22:51, 5年前 , 33F
的差異,可以請你告訴我嗎
03/01 22:51, 33F

03/01 23:09, 5年前 , 34F
你是把code存在一個xx.py 然後用python xx.py執行?
03/01 23:09, 34F

03/01 23:48, 5年前 , 35F
看他上面個訊息有 `pyshell#3` ,應該是在 cmd 中直接
03/01 23:48, 35F

03/01 23:48, 5年前 , 36F
執行的
03/01 23:48, 36F

03/01 23:55, 5年前 , 37F
依原文來看,原 PO 應該是把讀檔的概念弄錯。你要讀檔
03/01 23:55, 37F

03/01 23:56, 5年前 , 38F
時,必須先知道要被讀取的檔案的路徑,之後在呼叫 open
03/01 23:56, 38F

03/01 23:57, 5年前 , 39F
或其他讀檔的指令時(如你現在要用的 zipfile )再把該
03/01 23:57, 39F
還有 29 則推文
03/02 00:50, 5年前 , 69F
File "<pyshell#2>", line 1, in <module>
03/02 00:50, 69F

03/02 00:51, 5年前 , 70F
zip_file.extractall("C:\python\2")
03/02 00:51, 70F

03/02 00:51, 5年前 , 71F
File "C:\Users\user\AppData\Local\Programs\
03/02 00:51, 71F

03/02 00:52, 5年前 , 72F
\Python\Python37\lib\zipfile.py", line 1594,
03/02 00:52, 72F

03/02 00:52, 5年前 , 73F
, in extractall
03/02 00:52, 73F

03/02 00:53, 5年前 , 74F
self._extract_member(zipinfo, path, pwd)
03/02 00:53, 74F

03/02 00:53, 5年前 , 75F
File "C:\Users\user\AppData\Local\Programs\
03/02 00:53, 75F

03/02 00:54, 5年前 , 76F
\Python37\lib\zipfile.py", line 1640, in _extract_
03/02 00:54, 76F

03/02 00:55, 5年前 , 77F
member
03/02 00:55, 77F

03/02 00:55, 5年前 , 78F
os.makedirs(upperdirs)
03/02 00:55, 78F

03/02 00:56, 5年前 , 79F
File "C:\Users\user\AppData\Local\Programs\
03/02 00:56, 79F

03/02 00:56, 5年前 , 80F
Python\Python37\lib\os.py", line 221,
03/02 00:56, 80F

03/02 00:56, 5年前 , 81F
in makedirs
03/02 00:56, 81F

03/02 00:57, 5年前 , 82F
mkdir(name, mode)
03/02 00:57, 82F

03/02 00:57, 5年前 , 83F
OSError: [WinError 123] 檔案名稱、目錄名稱
03/02 00:57, 83F

03/02 00:57, 5年前 , 84F
或磁碟區標籤語法錯誤。: 'C:\\python\x02'
03/02 00:57, 84F

03/02 01:02, 5年前 , 85F
用一般字串表示路徑時, `\` 要改為 `\\` ,也就是說
03/02 01:02, 85F

03/02 01:03, 5年前 , 86F
你要寫成 zip_file.extractall("C:\\python\\2")
03/02 01:03, 86F

03/02 01:03, 5年前 , 87F
或著你可以改用 raw string,也就是改成
03/02 01:03, 87F

03/02 01:03, 5年前 , 88F
zip_file.extractall(r"C:\python\2")
03/02 01:03, 88F

03/02 01:04, 5年前 , 89F
詳細差異可以 google python raw string
03/02 01:04, 89F

03/02 01:05, 5年前 , 90F
另外,關於路徑的串接,可以再看看 os.path.join() 和
03/02 01:05, 90F

03/02 01:06, 5年前 , 91F
pathlib (for python 3)
03/02 01:06, 91F

03/02 01:07, 5年前 , 92F
然後,你如果不想用 pastebin/codepad 貼文字的話,可
03/02 01:07, 92F

03/02 01:08, 5年前 , 93F
以改成螢幕截圖後上傳到 imgur 再貼上來
03/02 01:08, 93F

03/02 01:09, 5年前 , 94F
因為看你一行一行貼感覺很累...
03/02 01:09, 94F

03/02 07:46, 5年前 , 95F
https://pastebin.com/2s74QxGR 請問這樣方便嗎
03/02 07:46, 95F

03/02 07:50, 5年前 , 96F
不好意思我是第一次聽說pastebin ,所以不大敢用
03/02 07:50, 96F

03/02 07:51, 5年前 , 97F
剛才試用才知道還不算難
03/02 07:51, 97F

03/02 10:07, 5年前 , 98F
上面說「看你一行一行貼感覺很累」是在說:你花好幾分
03/02 10:07, 98F

03/02 10:07, 5年前 , 99F
鐘把訊息慢慢貼上來,不會累嗎? 所以才跟你說有什麼
03/02 10:07, 99F

03/02 10:07, 5年前 , 100F
現有的工具可以讓你更方便啦 XD
03/02 10:07, 100F

03/02 10:08, 5年前 , 101F
然後重點是,指解壓縮到另一個路徑的問題解決了嗎?
03/02 10:08, 101F

03/02 10:19, 5年前 , 102F
路徑的\ 改成\\
03/02 10:19, 102F

03/02 10:21, 5年前 , 103F
讓別人了解你的問題很重要 辛苦推文大大
03/02 10:21, 103F

03/02 13:27, 5年前 , 104F
感謝gmccntzx1開示,我兩種路徑的方法試過都OK了
03/02 13:27, 104F

03/02 13:29, 5年前 , 105F
也試過直接解壓縮在新路徑資料夾上
03/02 13:29, 105F

03/02 13:30, 5年前 , 106F
也謝謝前文諸位網友指教,讓我可以快速抓到盲點在哪
03/02 13:30, 106F

03/02 13:33, 5年前 , 107F
我上午出門所以回覆的比較晚,請gmccntzx1多包涵
03/02 13:33, 107F

03/02 17:24, 5年前 , 108F
不用在意,問題有解決就好!
03/02 17:24, 108F
文章代碼(AID): #1SUFJ60J (Python)