как исправить 'fp.seek (self.start_dir, 0) OSError: [Errno 22] Неверный аргумент "в python - PullRequest
0 голосов
/ 18 июня 2019

Я пишу приложение на 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...