Python os与pyautoGUi模块

时间:2018-05-10 07:05:19

标签: python-3.x pyautogui

我无法让python输入" Hello world!"通过OS或子进程启动时,在记事本窗口中。 " Hello world!"我关闭记事本窗口后才会输入,为什么会这样?

以下代码:

import os
import pyautogui

os.system('"C:\\Windows\\System32\\notepad.exe"')
pyautogui.typewrite('Hello world!')

1 个答案:

答案 0 :(得分:0)

虽然您可以从命令提示符处运行记事本,然后使光标返回,但是os.system甚至subprocess.run在Python上都不起作用。每个等待直到与您的命令关联的进程ID被杀死。

但是,此代码将起作用:

import subprocess
subprocess.Popen('"C:\\Windows\\System32\\notepad.exe"')
# we want to give notepad time to appear.
time.sleep(1)
pyautogui.typewrite("Hello world!")
exit()

可能有比time.sleep()更准确的命令来等待记事本出现,类似于AutoIt中的WinWaitActive,我很想听听它。但是上面的方法应该起作用。

可能的解决方法可能是从命令行在Notepad ++中创建然后启动新文件,或者只是启动已经打开的Notepad ++实例并让pyautogui发送ctrl-n。在notepad ++中打开文本文件时,我能够在其他脚本中运行多个os.system调用,因为一旦找到打开版本的notepad ++即可打开文本文件,则该过程完成。

echo > my_new_file.txt
os.system("my_new_file.txt")

假设记事本++已经打开,则文件启动后,os.system会切出。