Я пишу приложение на python для распаковки архивных файлов zip, но получаю сообщение об ошибке.
Я попытался переименовать файл и удалить ненужные части скрипта.
Мой скрипт:
import zipfile
import tkinter as tk
import tkinter.ttk as ttk
import tkinter.messagebox as mgb
import tkinter.filedialog as tkfd
OutputPath = ""
ZIPFile = ""
root = tk.Tk()
def OpenFile() :
global ZIPFile
global OutputPath
ZIPFile = tkfd.askopenfilename(initialdir = "/",title = "Select file")
if OutputPath != "" and ZIPFile != "" : ZipBut.state(["!disabled"])
def OutputFile() :
global OutputPath
global ZIPFile
OutputPath = tkfd.askdirectory(initialdir = "/", title = "Select file")
if OutputPath != "" and ZIPFile != "" : ZipBut.state(["!disabled"])
def unzip() :
global ZIPFile
global OutputPath
with zipfile.ZipFile(ZIPFile) as File :
File.extractall(path = OutputPath)
CommandBar = ttk.Frame(root)
CommandBar.pack()
ttk.Button(CommandBar, text = "open", command = OpenFile).grid(row = 0, column = 0)
ttk.Button(CommandBar, text = "output", command = OutputFile).grid(row = 0, column = 1)
ZipBut = ttk.Button(CommandBar, text = "unzip", command = unzip)
ZipBut.grid(row = 0, column = 2)
ZipBut.state(["disabled"])
root.mainloop()
Im Ожидается, что файл распакуется в выбранную папку, однако получите исключение
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\dell\AppData\Local\Programs\Python\Python35-32\lib\tkinter\__init__.py", line 1558, in __call__
return self.func(*args)
File "C:/Users/dell/Desktop/ZIP/main.pyw", line 29, in unzip
with zipfile.ZipFile(ZIPFile) as File :
File "C:\Users\dell\AppData\Local\Programs\Python\Python35-32\lib\zipfile.py", line 1026, in __init__
self._RealGetContents()
File "C:\Users\dell\AppData\Local\Programs\Python\Python35-32\lib\zipfile.py", line 1111, in _RealGetContents
fp.seek(self.start_dir, 0)
OSError: [Errno 22] Invalid argument