Я разрабатываю скрипт на python, который открывает программу, используя модуль подпроцесса, а затем использует модуль pyautogui для отправки сочетаний клавиш в программу. Однако, когда программа открывается, и я посылаю ей ярлык CTRL + O, программа открывает файл и затем выполняет некоторую обработку этого файла.
Есть ли способ, используя модуль подпроцесса в python, дождаться, пока программа закончит обработку (но все еще работает), чтобы затем ввести сочетание клавиш CTRL + S (используя pyautogui), прежде чем окончательно завершить программу / процесс?
Вот пример кода, который я использую:
from pyautogui import press, typewrite, hotkey, moveTo
from subprocess import Popen, PIPE, STDOUT
import time
import os
def saveNClose(program, out_filename):
# open the save file dialog
hotkey('ctrl', 's')
#wait for save file dialog to appear
time.sleep(0.5)
# enter the file path of the file to save
typewrite(out_filename, interval=0.01)
# save to file
press('enter')
#close kurzweil
program.terminate()
def openProgram(in_fname, out_fname, wait_time):
#open kurzweil
program = Popen([r"C:\Program Files (x86)\Kurzweil Educational
Systems\Kurzweil 3000\Kurzweil 3000.exe"], stdout=PIPE, stdin=PIPE,
stderr=STDOUT, shell=False)
#wait for login screen to appear
time.sleep(2)
#login with creditentials Here
press('enter') #login
#wait for kuzweil to load
time.sleep(8)
#open the open file dialog
hotkey('ctrl', 'o')
#wait for open file dialog to appear
time.sleep(1)
#enter the file path of the file to open
typewrite(in_fname, interval=0.01)
#open the file
press('enter')
#wait for the conversion options to appear
time.sleep(0.5)
# confirm conversion options
press('enter')
# Program Does Processing Here
#**************************************************
# Need help Here to wait until processing is done.
#**************************************************
#Then input CTRL + S and Terminate.
saveNClose(program, out_fname)