Как мне убедиться, что Python fucntion с shutil.rmtree работает при первом запуске? - PullRequest
0 голосов
/ 07 мая 2020

Я пишу функцию для решения последовательной проблемы Pywin32 с «без атрибута 'CLSIDToClassMap'». По сути, мне нужно найти папку gen_py и удалить ее, а затем повторно запустить импорт Pywin32 для работы. В моем коде я использовал os.walk, чтобы найти папку gen_py, а затем удалил папку с помощью shutil.rmtree.

Однако, когда возникает проблема gen_py, функция всегда терпит неудачу при первом запуске (либо снова выдайте ошибку attributeerror, либо просто ничего не делайте), а затем будет работать, когда я ее повторно запустил. Может ли кто-нибудь указать мне, где я сделал не так, чтобы он всегда работал с первого раза?

Вот коды:

def connect_dbb():
    # Fixing win32com occasional AttributeError from gen_py folder
    try:
        ado_conn = win32com.client.gencache.EnsureDispatch('ADODB.Connection')
    except AttributeError:
        for root, dirs, _ in os.walk('C:\\Users'):
            for name in dirs:
                if name == 'gen_py':
                    gen_py_path = root + "\\" + name
                    shutil.rmtree(gen_py_path)
        ado_conn = win32com.client.gencache.EnsureDispatch('ADODB.Connection')

    cnn = "Provider=IBMDASQL;Data Source=DBB;"
    ado_conn.Open(cnn) # Open to enter user/pass
    ado_conn.Close()
...