Python: pywintypes.ошибка при запуске приложения для печати файлов в каталоге файлов pdf

#python #python-3.x #tkinter #operating-system #pywin32

#python #python-3.x #tkinter #операционная система #pywin32

Вопрос:

Я новичок в программировании, и у меня есть следующий сценарий

 import os
import tkinter as tk
import win32print
import win32com.shell.shell as shell
import win32api

root = tk.Tk()
root.title('Printing file app')
root.geometry('400x200')

check_var_list = []
file_list = []


def Print_act():
    def Print(file_link):
        print(file_link)
        win32print.SetDefaultPrinter('Printer_Name')
        win32api.ShellExecute(0, "print", file_link, None, '.', 0)

    for open_or_close, file_nam in zip(check_var_list, file_list):
        if open_or_close.get() == 1:
            file_link = os.path.join(t.get(), file_nam)
            os.startfile(file_link)
            Print(file_link)
        else:
            continue


def show_os(event):
    if not os.path.exists(t.get()):
        entry.destroy()
        label.destroy()
        la = tk.Label(root, text='Your file path is wrong or does not exist.')
        la.pack(pady=23)
        la.configure(font=('Century', 15, 'bold'))
        root.geometry('800x200')
    else:
        entry.destroy()
        label.destroy()

        b = tk.Button(root, text='Open', command=Print_act).pack()

        for roots, dirs, files in os.walk(t.get()):
            for sln, file_names in enumerate(files):
                file_list.append(file_names)

                check_var_list.append(tk.IntVar(value=1))
                ch = tk.Checkbutton(root, text=file_names, variable=check_var_list[sln])
                ch.pack()


t = tk.StringVar()
label = tk.Label(root, text='Enter file path here: ')
label.pack(padx=23, pady=23)
entry = tk.Entry(root, textvariable=t)
entry.pack()
root.bind('<Return>', show_os)
root.configure(bg='#856ff8')
root.mainloop()

  

Код должен был выполнять следующие шаги:

  • Спросите путь к каталогу файлов
  • Показывать все файлы в этом каталоге с расширением, при этом все элементы отмечены по умолчанию
  • Откройте и распечатайте все файлы, проверенные на предыдущем шаге

Все это отлично работает, когда у меня есть .txt .docx документ или, но когда есть каталог с файлами PDF, этот код открывает первый PDF-файл, а затем выдает следующую ошибку

 pywintypes.error: (31, 'ShellExecute', 'A device attached to the system is not functioning.')
  

Я не могу это исправить, и, вероятно, это связано с тем, что каждый из моих файлов PDF открывается с помощью веб-браузера.

Я на Python 3.8.

Пожалуйста, помогите!