将突出显示的文本复制到剪贴板,然后使用剪贴板将其附加到列表

新手上路,请多包涵

我正在尝试使用适用于 Python 3 (Windows 10) 的 pyautogui 模块在浏览器或文字处理器中自动执行某些操作。

浏览器中有一个突出显示的文本。

text

以下脚本应打印突出显示的文本

import pyautogui as pya

# double clicks on a position of the cursor
pya.doubleClick(pya.position())

list = []
# a function copy_clipboard() should be called here
var = copy_clipboard()
list.append(var)
print(list)

输出应该是:

[text]

那么函数 copy_clipboard() 应该是什么样子的呢?谢谢您的帮助。

原文由 Stefan Smirnov 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 770
2 个回答

键盘组合 Ctrl + C 处理复制大多数应用程序中突出显示的内容,应该适合您。这部分很容易 pyautogui 。要以编程方式获取剪贴板内容,正如其他人提到的,您可以使用 ctypespywin32 或其他库来实现它。在这里我选择 pyperclip

 import pyautogui as pya
import pyperclip  # handy cross-platform clipboard text handler
import time

def copy_clipboard():
    pya.hotkey('ctrl', 'c')
    time.sleep(.01)  # ctrl-c is usually very fast but your program may execute faster
    return pyperclip.paste()

# double clicks on a position of the cursor
pya.doubleClick(pya.position())

list = []
var = copy_clipboard()
list.append(var)
print(list)

原文由 soundstripe 发布,翻译遵循 CC BY-SA 4.0 许可协议

soundstripe 发布的内容是有效的,但没有考虑在复制了先前的值时复制空值。我添加了一个额外的行来清除剪贴板,因此空值副本保持空值:

 import pyautogui as pya
import pyperclip  # handy cross-platform clipboard text handler
import time

def copy_clipboard():
    pyperclip.copy("") # <- This prevents last copy replacing current copy of null.
    pya.hotkey('ctrl', 'c')
    time.sleep(.01)  # ctrl-c is usually very fast but your program may execute faster
    return pyperclip.paste()

# double clicks on a position of the cursor
pya.doubleClick(pya.position())

list = []
var = copy_clipboard()
list.append(var)
print(list)

原文由 phfb 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题