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

时间:2018-07-24 18:25:35

标签: python python-3.x pyautogui

我正在尝试使用适用于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()应该是什么样? 谢谢您的帮助。

5 个答案:

答案 0 :(得分:6)

键盘组合键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)

答案 1 :(得分:1)

发布的声音条纹是有效的,但是没有考虑到在复制前一个值时复制空值的情况。我添加了另外一行来清除剪贴板,以便空值副本保持空值:

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)

答案 2 :(得分:0)

好吧...这是

from tkinter import Tk

def copy_clipboard():
    clipboard = Tk().clipboard_get()
    return clipboard

Tk().clipboard_get()返回剪贴板中的当前文本。

您需要先使用pyautogui.hotkey('ctrl', 'c')

答案 3 :(得分:0)

您可以导入pyperclip并使用pyperclip.copy('my text I want copied'),然后使用pyperclip.paste()将文本粘贴到您想去的地方。您可以找到参考文献here

答案 4 :(得分:0)

获取突出显示/选定文本的另一个选项:

import subprocess
import shlex
selected_text = subprocess.check_output((shlex.split('xclip -out -selection')))