Я пишу функцию для решения последовательной проблемы 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()