2024年9月14日 星期六

如何在 Colab 解壓縮 zip 檔

當要上傳很多檔案到 Colab 時, 一個一個上傳會很花時間, 最好是將這些檔案在本機壓縮成 zip 檔上傳 Colab 後再解壓縮. 

本系列之前的文章參考 :


首先在本機中將要上傳的檔案壓縮成 zip 檔, 例如要辨識的車牌圖檔 : 




按 Colab 檔案管理框上面的上傳按鈕, 點選要上傳的 zip 檔 :





可見 plates.zip 已上傳至 Colab 的預設資料夾 /content 下了. 

在 Colab 中解壓縮 zip 檔有兩個做法 : 


1. 使用 !unzip 指令 :

語法如下 :

!unzip 壓縮檔路徑檔名 -d 解壓目的地資料夾路徑

如果沒有指定資料夾路徑的話, 預設就是根目錄下的 /content 資料夾, 此處我想將解壓縮後的檔案放在 /content/plates 下, 所以先在檔案管理框按滑鼠右鍵點選 "新增資料夾", 然後輸入 plates :





然後在儲存格輸入下列指令 :

!unzip plates.zip -d plates    

也可以明確加上路徑 :

!unzip /content/plates.zip -d /content/plates    




這樣便完成解壓縮了. 點擊 ABC5678.jpg 會在最右邊顯示此車牌圖檔 :




2. 使用 zipfile 模組解壓縮 : 

zipfile 是 Python 的內建模組, 裡面有一個 ZipFile 類別可用來解壓縮 zip 檔, 呼叫其建構式 ZipFile() 並傳入 zip 檔之路徑檔名以 'r' 模式開啟 zip 檔後, 呼叫檔案參考物件之 extractall() 方法即可, 語法如下 :

with ZipFile('zip 檔之路徑檔名', 'r') as z : 
    z.extractall('目的地資料夾路徑') 

先在 Colab 檔案管理框預設資料夾 /content 下新增一個 plates2 資料夾來存放解壓後之圖檔 :




然後在程式碼儲存格輸入下列指令 :

from zipfile import ZipFile
with ZipFile('plates.zip', 'r') as z:
    z.extractall('plates2')

執行後檢查 plates2 資料夾果然圖檔都已解壓在此 :




如前所述, 當 Colab 連線終止時這些上傳到 Linux 虛擬機器上的資料都會被清掉, 所以也不需要特地去刪除. 但如果有節省儲存空間考量需動態刪除不用的資料夾, 可以用 shutil 模組的 rmtree() 函式來刪除 :

import shutil  
shutil.rmtree('plates2')  




可見 plates2 資料夾已被刪除. 注意, 如果是手動操作, Colab 的檔案管理框無法直接刪除一個裡面還有檔案的資料夾, 必須將裡面的檔案一一刪除成為空資料夾後才能刪除它. 

沒有留言 :