[Python] EOF error with staticmethod for xlworkbook class

Discussão em 'Python' iniciado por Stack, Setembro 3, 2025.

  1. Stack

    Stack Membro Participativo

    I'm trying to open password protected Excel workbooks and found the code I've posted below on this page but when I try to implement it I'm getting a SytaxError and an IndentationError.

    xlpassword.py:

    import xlwings as xw
    from autoit.autoit import AutoItError
    import autoit
    import threading

    class _WB(object):

    def __init__(self, path, password=None):
    self.path = path
    self.password = password
    self.name = path

    @staticmethod
    def _handlepassword(password):#this line is giving the error
    if password:
    autoit.win_wait_active("[TITLE:Excel]", 5)
    autoit.send(password)
    autoit.send("{ENTER}")


    def op(self):
    try: # If already opened
    autoit.win_activate("%s - Excel"%self.name)
    self.book = xw.Book(self.path)
    except AutoItError: # Else
    t = threading.Thread(target=self._handlepassword, args=(self.password,))
    t.start()
    self.book = xw.Book(self.path)
    t.join()
    finally:
    return self

    def _wait(self):
    autoit.win_wait_active("%s - Excel"%self.name, 1)

    def close(self):
    self._wait()
    self.book.close()
    autoit.win_close("Excel")


    When I get to the def _handlepassword line I get the output


    SyntaxError: unexpected EOF while parsing (, line 1)
    IndentationError: unexpected indent (, line 1)
    ​

    Which means when I import xlpassword.py into another python script, that new script fails to run

    test_run.py:

    import pandas as pd
    from xlpassword import * #I know this isn't best practice

    PATH = "C:\\Path\\to\\my\\file.xlsx"

    print(PATH)
    wb = _WB(path=PATH, password='MyP8ssw0rd')


    I'm using python 3.8.1 on a windows 10 machine, and I have tried to run the code in spyder, sublime, and Rstudio (I normally work in Rstudio but I thought that might be what's causing the problem).

    I have read up on classes, class methods, and static methods and I can't see what I'm doing wrong here so if anyone could provide assistance it would help a lot.

    Continue reading...

Compartilhe esta Página