我无法让python输入" Hello world!"通过OS或子进程启动时,在记事本窗口中。 " Hello world!"我关闭记事本窗口后才会输入,为什么会这样?
以下代码:
import os
import pyautogui
os.system('"C:\\Windows\\System32\\notepad.exe"')
pyautogui.typewrite('Hello world!')
答案 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会切出。