我试图使一个基本的Windows应用程序构建出用户输入的字符串,然后将其添加到剪贴板。如何使用Python将字符串复制到剪贴板?
当前回答
在Windows上,你可以使用这个。没有外部依赖,也不必打开子进程:
import win32clipboard
def to_clipboard(txt):
win32clipboard.OpenClipboard()
win32clipboard.EmptyClipboard()
win32clipboard.SetClipboardText(txt)
win32clipboard.CloseClipboard()
其他回答
可以使用pyperclip -跨平台剪贴板模块。或施乐类似的模块,除了需要win32 Python模块才能在Windows上工作。
你可以试试这个:
command = 'echo content |clip'
subprocess.check_call(command, shell=True)
在Windows上,你可以使用这个。没有外部依赖,也不必打开子进程:
import win32clipboard
def to_clipboard(txt):
win32clipboard.OpenClipboard()
win32clipboard.EmptyClipboard()
win32clipboard.SetClipboardText(txt)
win32clipboard.CloseClipboard()
我没有解决办法,只有一个变通办法。
Windows Vista以后有一个内置的命令,称为剪辑,它从命令行获取命令的输出,并将其放入剪贴板。例如:ipconfig | clip。
所以我用os模块做了一个函数,它接受一个字符串,并使用内置的Windows解决方案将它添加到剪贴板。
import os
def addToClipBoard(text):
command = 'echo ' + text.strip() + '| clip'
os.system(command)
# Example
addToClipBoard('penny lane')
# Penny Lane is now in your ears, eyes, and clipboard.
然而,正如前面的评论中所指出的,这种方法的一个缺点是echo命令会自动在文本的末尾添加换行符。为了避免这种情况,你可以使用命令的修改版本:
def addToClipBoard(text):
command = 'echo | set /p nul=' + text.strip() + '| clip'
os.system(command)
如果您使用的是Windows XP,只需按照从Windows XP Pro的命令提示符直接复制并粘贴到剪贴板中的步骤即可。
实际上,对于这个简单的任务,pywin32和ctypes似乎是多余的。tkinter是一个跨平台的GUI框架,默认情况下与Python一起发布,并具有剪贴板访问方法和其他很酷的东西。
如果你所需要的只是将一些文本放入系统剪贴板,这将做到:
from tkinter import Tk # in Python 2, use "Tkinter" instead
r = Tk()
r.withdraw()
r.clipboard_clear()
r.clipboard_append('i can has clipboardz?')
r.update() # now it stays on the clipboard after the window is closed
r.destroy()
仅此而已,不需要在特定于平台的第三方库上浪费时间。
如果您正在使用Python 2,请将tkinter替换为tkinter。
推荐文章
- 将一个列表分成大约相等长度的N个部分
- Python __str__与__unicode__
- 在python中,del和delattr哪个更好?
- 如何动态加载Python类
- 有没有办法在python中做HTTP PUT
- “foo Is None”和“foo == None”之间有什么区别吗?
- 类没有对象成员
- Django模型“没有显式声明app_label”
- 熊猫能自动从CSV文件中读取日期吗?
- 在python中zip的逆函数是什么?
- 有效的方法应用多个过滤器的熊猫数据框架或系列
- 如何检索插入id后插入行在SQLite使用Python?
- 我如何在Django中添加一个CharField占位符?
- 如何在Python中获取当前执行文件的路径?
- 我如何得到“id”后插入到MySQL数据库与Python?