最近在网上搜索Python调用剪切板的方法,得到比较多的说法是调用ctypes包中自带的函数get_clipboard和set_clipboard函数,可是但我动手实现时却发现根本没有这两个函数,于是我觉得自己写一篇文字讲述Python的剪切板,可能不全,敬请谅解。

网上看到有人说pandas包里有从剪切板到数据库的方法read_clipboard,于是通过阅读内部文件,发现了pandas的内部剪切板方法,我个人认为这是最好用的方法:

1. 使用pandas.io.clipboard的方法

安装有pandas包的小伙伴可以试一试,安装代码:Win+R输入pip install pandas

import pandas.io.clipboard as cb

cb.copy("复制内容")  # 复制到剪切板
print(cb.paste())   # 从剪切板粘贴(获取内容),并打印

2. 使用pyperclip的方法

安装有pyperclip包的小伙伴可以试一试,安装代码:Win+R输入pip install pyperclip

import pyperclip as cb

cb.copy("复制内容")  # 复制到剪切板
print(cb.paste())   # 从剪切板粘贴(获取内容),并打印

参考文章:python如何操作剪切板? | w3c笔记

3. 使用win32clipboard的方法

安装有win32clipboard 包的小伙伴可以试一试,安装代码:Win+R输入pip install win32clipboard

import win32clipboard as cb

cb.OpenClipboard()  # 打开剪切板
cb.SetClipboardData(1, "复制内容")  # 复制到剪切板
print(cb.GetClipboardData(1))      # 从剪切板粘贴(获取内容),并打印
cb.CloseClipboard()  # 关闭剪切板

参考文章:Python使用剪切板的方法(python 操作剪切板)-python教程-知优网

4. 使用os.system控制命令的方法

如果你用的Windows设备可以试一试,但这种方法只能复制,且末尾会多一个换行:

import os

os.system("echo 复制内容 | clip")  # 复制不含空格的文本到剪切板
# os.system("clip < 文件路径")     # 复制文件到剪切板

5. 使用subprocess模块下的Popen方法

如果你用的苹果电脑或其他Mac设备可以试一试:

from subprocess import Popen, PIPE

def set_clipboard(data: str):  # 复制到剪切板
    with Popen(['pbcopy'], stdin=PIPE) as p:
        p.stdin.write(data.encode("utf-8"))
        p.stdin.close()
        p.communicate()

def get_clipboard():  # 从剪切板粘贴(获取内容)
    with Popen(['pbpaste'], stdout=PIPE) as p:
        p.wait()
        paste_bytes = p.stdout.read()
        p.stdout.close()
    return paste_bytes.decode('utf-8')

if __name__ == "__main__":
    set_clipboard('复制内容')  # 复制到剪切板
    print(get_clipboard())    # 从剪切板粘贴(获取内容),并打印

参考文章:Python 操作剪切板 | 操作