開啟多個檔案後,製作成壓縮檔
這篇教學會運用「點擊按鈕開啟多個檔案」以及「壓縮檔案 zipfile」文章,實際製作出一個簡單的介面,在介面裡可以選擇多個檔案後,將多個檔案壓縮成為一個壓縮檔的功能。
因為 Google Colab 不支援 tkinter,所以請使用本機環境 ( 參考:使用 Python 虛擬環境 ) 或使用 Anaconda Jupyter 進行實作 ( 參考:使用 Anaconda )。
編輯版面
使用 gird() 方法編輯版面,在畫面的上方加入兩個按鈕,一顆按鈕為加入檔案,另一顆是壓縮檔案,接著在下方加入一個 Text 多行輸入框,負責顯示開啟後的檔案路徑。
import tkinter as tk
from tkinter import Variable, filedialog
import zipfile
root = tk.Tk()
root.title('oxxo.studio')
root.geometry('400x200')
btn_open = tk.Button(root,
text='加入檔案',
font=('Arial',14),
)
btn_open.grid(column=0, row=0) # 加入檔案按鈕,放在左上角
btn_zip = tk.Button(root,
text='壓縮檔案',
font=('Arial',14),
)
btn_zip.grid(column=1, row=0) # 壓縮檔案按鈕,放在右上角
text = tk.Text(root, height=8, width=50) # 多行輸入框,放在下方
text.grid(column=0, row=1, columnspan=2)
root.mainloop()
加入點擊按鈕程式
版面編輯完成後,定義兩個函式 show() 和 zip(),分別處理開啟並顯示檔案,以及壓縮檔案,再將其與兩顆按鈕綁定,完成後就可以加入檔案並且壓縮所加入的檔案,此外這種做法也可以在開啟檔案後,再從 Text 移除所加入的檔案,進行簡單的調整。
import tkinter as tk
from tkinter import Variable, filedialog
import zipfile
root = tk.Tk()
root.title('oxxo.studio')
root.geometry('400x200')
# 開啟檔案函式
def show():
files = filedialog.askopenfilenames()
for i, e in enumerate(files):
text.insert('end', f'{e}\n') # 如果不是最後一筆,加上換行符
if i == len(files):
text.insert('end') # 如果是最後一筆,不要換行
def zip():
content = text.get(1.0,'end-1c') # 取得文字輸入框內容,使用 end-1c 不要取得最後換行
new_files = content.split('\n') # 從換行符進行換行
del new_files[-1] # 刪除最後一筆空資料
print(new_files)
with zipfile.ZipFile('test.zip', mode='w') as zf:
for i in new_files:
zf.write(i) #壓縮檔案
btn_open = tk.Button(root,
text='加入檔案',
font=('Arial',14),
command=show
)
btn_open.grid(column=0, row=0)
btn_zip = tk.Button(root,
text='壓縮檔案',
font=('Arial',14),
command=zip
)
btn_zip.grid(column=1, row=0)
text = tk.Text(root, height=8, width=50)
text.grid(column=0, row=1, columnspan=2)
root.mainloop()
意見回饋
如果有任何建議或問題,可傳送「意見表單」給我,謝謝~