PyAutoGui падает, если включены операторы if/then

Недавно у меня был успешный пробный запуск с PyAutoGui с некоторым грубым кодом, который я написал, чтобы помочь мне завершить некоторые повторяющиеся монотонные загрузки, которые я должен регулярно делать для бизнеса моей жены. Несмотря на свое уродство, он работал хорошо.

В попытке немного его уточнить я начал получать сообщения об ошибках только после включения оператора if/then. Я добавил оператор if/then, чтобы он пропускал пустые каталоги. Я пытаюсь определить, в чем именно проблема. Я использую Python 3.4 на Windows 10.

Вот код (я использовал команду time.sleep(), потому что выполнение некоторых команд занимает некоторое время, особенно те, которые находятся внутри браузера):

import pyautogui
from tkinter import *
import time
import os
master = Tk()

def Upload_All_Amelias():
    Select_Chrome()
    time.sleep(1)
    if os.listdir('D:\\Inventory\\Amelia\\XXS') != []:  #Checks to see if the directory is empty
        XXS_Amelias()
    else:
        pyautogui.hotkey('Ctrl', 'Tab'), #Selects the Next tab
    time.sleep(1)
    if os.listdir('D:\\Inventory\\Amelia\\XS') != []:  #Checks to see if the directory is empty
        XS_Amelias()
    else:
        pyautogui.hotkey('Ctrl', 'Tab'), #Selects the Next tab
    time.sleep(1)
    if os.listdir('D:\\Inventory\\Amelia\\S') != []:  #Checks to see if the directory is empty
        S_Amelias()

def Select_Chrome():
    pyautogui.hotkey('Alt', 'Tab'),  #Selects Chrome

def XXS_Amelias():
    time.sleep(0.2),
    pyautogui.moveTo(1074,160),     #Moves cursor to "Add Photos"
    time.sleep(0.2),                #ZZZ
    pyautogui.click(),              #Clicks "Add Photos"
    time.sleep(1.5),                #ZZZ
    pyautogui.hotkey('Ctrl', 'l'),  #Selects Address Bar
    time.sleep(0.2),
    pyautogui.typewrite('D:\\Inventory\\Amelia\\XXS'),         #Pastes in correct directory path
    time.sleep(0.2),
    pyautogui.hotkey('Enter'),      #Hits enter to open correct directory
    pyautogui.moveTo(1000,600),     #Positions cursor in the middle of the directory window
    pyautogui.click(),              #Clicks in the middle of the directory window to select the window
    pyautogui.hotkey('Ctrl', 'a')   #Selects all
    time.sleep(0.2),                #ZZZ
    pyautogui.hotkey('Enter')       #Hits enter to upload all selected files
    time.sleep(0.5),                #ZZZ
    pyautogui.hotkey('Ctrl', 'Tab'), #Selects the Next tab

def XS_Amelias():
    time.sleep(0.2),
    pyautogui.moveTo(1074,160),     #Moves cursor to "Add Photos"
    time.sleep(0.2),                #ZZZ
    pyautogui.click(),              #Clicks "Add Photos"
    time.sleep(1.5),                #ZZZ
    pyautogui.hotkey('Ctrl', 'l'),  #Selects Address Bar
    time.sleep(0.2),
    pyautogui.typewrite('D:\\Inventory\\Amelia\\XS'),         #Pastes in correct directory path
    time.sleep(0.2),
    pyautogui.hotkey('Enter'),      #Hits enter to open correct directory
    pyautogui.moveTo(1000,600),     #Positions cursor in the middle of the directory window
    pyautogui.click(),              #Clicks in the middle of the directory window to select the window
    pyautogui.hotkey('Ctrl', 'a')   #Selects all
    time.sleep(0.2),                #ZZZ
    pyautogui.hotkey('Enter')       #Hits enter to upload all selected files
    time.sleep(0.5),                #ZZZ
    pyautogui.hotkey('Ctrl', 'Tab'), #Selects the Next tab

def S_Amelias():
    time.sleep(0.2),
    pyautogui.moveTo(1074,160),     #Moves cursor to "Add Photos"
    time.sleep(0.2),                #ZZZ
    pyautogui.click(),              #Clicks "Add Photos"
    time.sleep(1.5),                #ZZZ
    pyautogui.hotkey('Ctrl', 'l'),  #Selects Address Bar
    time.sleep(0.2),
    pyautogui.typewrite('D:\\Inventory\\Amelia\\S'),         #Pastes in correct directory path
    time.sleep(0.2),
    pyautogui.hotkey('Enter'),      #Hits enter to open correct directory
    pyautogui.moveTo(1000,600),     #Positions cursor in the middle of the directory window
    pyautogui.click(),              #Clicks in the middle of the directory window to select the window
    pyautogui.hotkey('Ctrl', 'a')   #Selects all
    time.sleep(0.2),                #ZZZ
    pyautogui.hotkey('Enter')       #Hits enter to upload all selected files
    time.sleep(0.5),                #ZZZ
    pyautogui.hotkey('Ctrl', 'Tab'), #Selects the Next tab

button = Button(master, text = "Upload All Amelias", command=Upload_All_Amelias, height = 5, width = 20)

button.pack()

mainloop()

Опять же, кажется, что все работает отлично, когда я вызываю их все без операторов if/then. Но по какой-то причине, когда я их использую, происходит сбой.

Вот определение Upload_All_Amelias, когда код работает:

def Upload_All_Amelias():
    Select_Chrome()
    time.sleep(1)
    XXS_Amelias()
    time.sleep(1)
    XS_Amelias()
    time.sleep(1)
    S_Amelias()

Вот сообщение об ошибке, которое я получаю, когда запускаю его с включенными операторами if/then:

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python34\lib\tkinter\__init__.py", line 1482, in __call__
    return self.func(*args)
  File "C:/Users/Sam/Python Projects/UPLOAD_ALL_AMELIAS_5a.py", line 16, in Upload_All_Amelias
    XS_Amelias()
  File "C:/Users/Sam/Python Projects/UPLOAD_ALL_AMELIAS_5a.py", line 51, in XS_Amelias
    pyautogui.click(),              #Clicks "Add Photos"
  File "C:\Python34\lib\site-packages\pyautogui-0.9.33-py3.4.egg\pyautogui\__init__.py", line 362, in click
    platformModule._click(x, y, 'left')
  File "C:\Python34\lib\site-packages\pyautogui-0.9.33-py3.4.egg\pyautogui\_pyautogui_win.py", line 437, in _click
    _sendMouseEvent(MOUSEEVENTF_LEFTCLICK, x, y)
  File "C:\Python34\lib\site-packages\pyautogui-0.9.33-py3.4.egg\pyautogui\_pyautogui_win.py", line 480, in _sendMouseEvent
    raise ctypes.WinError()
FileNotFoundError: [WinError 18] There are no more files.

Еще одна информация, она хорошо проходит через первое утверждение, а затем падает во втором. Но разделы должны быть идентичны, за исключением каталога, который он вызывает.

Я извиняюсь за такую ​​длинную запись. Любая помощь будет оценена.

0 ответов

Другие вопросы по тегам