You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python将PDF复制到剪贴板实现Outlook批量邮件附件自动化?

解决通过Python将PDF文件路径写入剪贴板供Outlook粘贴附件的问题

问题原因分析

你之前的代码执行失败主要有两个核心问题:

  • Python字符串里的反斜杠会被自动转义,'c:\Users\...'中的\U会被识别为特殊转义字符,导致实际传递的路径出现错误
  • PowerShell命令里的路径未用引号包裹,若路径包含空格或特殊字符,会直接触发命令执行失败,返回值1就是命令执行出错的明确信号

修复方案一:修正PowerShell调用逻辑

把路径改为原始字符串(前缀加r)避免转义问题,同时给PowerShell中的路径套上双引号,确保特殊字符能被正确解析:

import os
# 用原始字符串避免反斜杠被转义
path = r'c:\Users\myusername\MyPythonScripts\filename.pdf'
# 给路径添加双引号,兼容带空格或特殊字符的路径
command = f'powershell Set-Clipboard -LiteralPath "{path}"'
# 执行命令,返回值0代表执行成功
exit_code = os.system(command)
if exit_code == 0:
    print("文件路径已成功写入剪贴板")
else:
    print("命令执行失败,请检查路径是否存在或格式是否正确")

修复方案二:直接用win32clipboard操作剪贴板(更稳定)

无需依赖PowerShell,直接通过win32clipboard将文件路径以Windows原生文件格式写入剪贴板,效果和手动在资源管理器复制文件完全一致:

import win32clipboard
import win32con

def copy_file_to_clipboard(file_path):
    win32clipboard.OpenClipboard()
    win32clipboard.EmptyClipboard()
    # 转换为Windows剪贴板支持的CF_HDROP格式
    file_bytes = file_path.encode('utf-16-le') + b'\x00\x00'
    win32clipboard.SetClipboardData(win32con.CF_HDROP, file_bytes)
    win32clipboard.CloseClipboard()

# 调用示例
target_path = r'c:\Users\myusername\MyPythonScripts\filename.pdf'
copy_file_to_clipboard(target_path)

这个方法直接操作剪贴板底层数据,兼容性更强,Outlook粘贴时会自动识别为附件。

内容的提问来源于stack exchange,提问作者Josh George

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 22:22:33