【问题标题】:Python os with pyautoGUi module带有 pyautoGUI 模块的 Python 操作系统
【发布时间】:2023-03-08 13:54:01
【问题描述】:

我无法让 python 输入“Hello world!”通过操作系统或子进程启动记事本窗口时。 “世界你好!”只有在我关闭记事本窗口后才会输入,为什么会这样?

代码如下:

import os
import pyautogui

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

【问题讨论】:

    标签: python-3.x pyautogui


    【解决方案1】:

    虽然您可以从命令提示符运行记事本,然后将光标返回,但 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 一旦文件启动就会中断,假设 Notepad++ 已经打开。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-22
      • 2011-08-31
      • 2013-04-15
      • 2016-11-28
      • 2022-11-12
      • 2012-06-14
      • 1970-01-01
      • 2013-12-05
      相关资源
      最近更新 更多