前言

在使用uiautomation操作微信发送信息时候,难点在于发送文件。发送文件,靠的是复制到剪切板,然后再从剪切板粘贴发送。
本文吧啦一下在Windows系统中关于Python复制文件到剪切板的操作。

花了挺多时间,但是不管怎么找,始终都找不着Python复制文件到剪切板的方法。
于是另辟蹊径,从Windows系统上下手,然后再利用Python去调用Windows系统的命令,曲线救国,从而达到Python复制我呢见到剪切板的方法。
多动一下自己那个🐷脑袋,问题总是可以解决的🐱‍🏍🐱‍🏍

知识点📖📖

文中用到的命令都可以在 https://docs.microsoft.com/zh-cn/ 找到相应的解释,有疑问请找它,不要来问我!!!

复制文本

  • cmd窗口:echo text | clip
  • Python模块:pyperclip

复制文件

  • 借助工具 xclip:echo file_path | xclip /copy
  • 借助PowerShell命令:Get-Item file_path | Set-Clipboard

实现

复制文本

这里介绍两种方法

  • Windows系统命令
  • Python模块pyperclip

Windows系统命令

在Windows系统中,cmd窗口输入以下命令可以将text文本复制到剪切板

echo text | clip

在Python中,可以使用os模块来执行cmd命令

  • text替换成需要复制到剪切板的文本即可
import os
os.system('echo text | clip')

pyperclip

在Python中,有模块是支持复制文本到剪切版的

pip install pyperclip

使用的话,也是很简单

import pyperclip

# 复制文本到剪切板
pyperclip.copy('The text to be copied to the clipboard.')

# 获取剪切板的文本
text = pyperclip.paste()
print(text)	# 'The text to be copied to the clipboard.'


复制文件

!!!可以很负责任地说,别处找不着这么好且这么多的方法~
!!!可以很负责任地说,别处找不着这么好且这么多的方法~
!!!可以很负责任地说,别处找不着这么好且这么多的方法~

这里介绍几种方法,

  • xclip工具
  • PowerShell命令二则

xclip工具

这个方法一次只能复制一个文件到剪切板

首先,点击这里 下载xclip工具

然后,将它添加到系统环境变量(可选操作,可不添加。

示例如下

当前文件夹中有一份 demo.txt文件,现在需要将它复制到剪切板
在当前文件夹地址栏输入cmd(其它方式也行
然后输入

echo demo.txt | xclip /copy

以上,就可以将文件复制到剪切板了~~

使用Python的os模块去调用如下:

import os
os.system('echo demo.txt | xclip /copy')

PowerShell命令二则

这个方法一次只能复制一个文件到剪切板
这个虽然是PowerShell的命令,但却是使用cmd窗口去执行的。

第一则

代码如下:

set "file=你的文件全路径"

powershell -sta "$sc=New-Object System.Collections.Specialized.StringCollection;$sc.Add('%file%');Add-Type -Assembly 'System.Windows.Forms';[System.Windows.Forms.Clipboard]::SetFileDropList($sc);"

在cmd窗口中输入以上代码,即可将你指定的文件复制到剪切版了。
将它改写成 .bat可执行 文件,如下

demo.bat

@ECHO OFF
set file=%1
powershell -sta "$sc=New-Object System.Collections.Specialized.StringCollection;$sc.Add('%file%');Add-Type -Assembly 'System.Windows.Forms';[System.Windows.Forms.Clipboard]::SetFileDropList($sc);"

代码释义:
第一行:.bat可执行文件默认写法
第二行:%1 为接收外部的第一个传参,接收文件的路径
第三行:复制文件到剪切板

然后再使用 Python去调用它

import os

os.system('demo.bat 文件的绝对路径')

以上,即可将文件复制到剪切板了。


第二则

这个方法一次可复制多个文件到剪切板,建议用这个方法!!!

这里借助的是PowerShell,所以需要打开PowerShell 去执行。

如下图:

执行的命令如下:

复制单个文件到剪切板

Get-Item demo.txt | Set-Clipboard

复制多个文件到剪切板(用逗号隔开

Get-Item demo.txt,demo2.txt | Set-Clipboard

使用Python调用,如下

import subprocess

args = ['powershell', 'Get-Item 文件路径,文件路径,... | Set-Clipboard']
subprocess.Popen(args=args)

后话

本文介绍到此,
see you.🎈🎈

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐