赵灵越 2024-03-24 21:59 采纳率: 99.3%
浏览 3
已结题

为啥讯飞可以截取我的文本到剪切板,而gpt给的代码就是不行?


import subprocess
import time
import os

# 定义一个函数来获取剪贴板内容
def get_clipboard_content():
    # 使用子进程执行 termux-clipboard-get 命令,获取剪贴板内容
    process = subprocess.Popen(['termux-clipboard-get'], stdout=subprocess.PIPE)
    # 读取命令的输出
    output, _ = process.communicate()
    # 将输出从字节转换为字符串,并去除两端的空白字符
    return output.decode('utf-8').strip()

# 定义一个函数来将内容保存到文件并打印
def save_to_file_and_print(content):
    # 设置文件的路径
    file_path = '/storage/emulated/0/代码/代码设计/剪切板记录.txt'
    # 以追加模式打开文件
    with open(file_path, 'a') as file:
        # 获取当前时间
        current_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
        # 将剪贴板内容和当前时间写入文件
        file.write(f"记录: {content} 时间: {current_time}\n")
    # 打印保存成功的信息
    print(f"已保存剪贴板内容到文件:{content}")

# 获取当前的剪贴板内容
clipboard_content = get_clipboard_content()

# 如果剪贴板内容不为空,则保存到文件
if clipboard_content:
    save_to_file_and_print(clipboard_content)
else:
    # 如果文件不存在,则创建文件并写入标题
    file_path = '/storage/emulated/0/代码/代码设计/剪切板记录.txt'
    if not os.path.exists(file_path):
        with open(file_path, 'w') as file:
            file.write("剪切板记录:\n")

# 无限循环,每秒检查一次剪贴板内容
while True:
    # 获取新的剪贴板内容
    new_clipboard_content = get_clipboard_content()
    # 如果剪贴板内容有变化
    if new_clipboard_content != clipboard_content:
        # 保存新的剪贴板内容到文件
        save_to_file_and_print(new_clipboard_content)
        # 更新剪贴板内容的记录
        clipboard_content = new_clipboard_content
    # 等待1秒后再次检查
    time.sleep(1)

```

  • 写回答

3条回答 默认 最新

  • 关注

    代码改变社会 晚上好🌙🌙🌙
    本答案参考ChatGPT-3.5

    讯飞可以截取文本到剪切板是因为它在Android系统上有相应的API和权限来访问剪切板。而gpt给的代码不行是因为它是基于Python语言开发的,Python本身没有直接访问剪切板的API和权限。

    针对这个问题,可以采取以下解决方案:

    1. 使用第三方库:可以使用Python的第三方库来实现访问剪切板的功能,比如clipboard库或pyperclip库。这些库提供了访问剪切板的相关方法,可以帮助你获取剪切板的内容。

    2. 调用系统命令:可以使用Python的subprocess库调用系统命令来获取剪切板内容。比如,在Windows系统上可以使用'clip'命令,而在Linux系统上可以使用'xclip'命令来获取剪切板内容。

    3. 使用系统特定的API:对于不同的操作系统,可以使用相应的API来获取剪切板内容。比如,使用ctypes库来调用Windows的API,或使用AppKit库来调用MacOS的API。

    修改代码如下:

    import subprocess
    import time
    import os
    import platform
    
    # 定义一个函数来获取剪贴板内容
    def get_clipboard_content():
        if platform.system() == "Windows":
            command = 'clip'
        elif platform.system() == "Linux":
            command = 'xclip -selection clipboard -o'
        elif platform.system() == "Darwin":
            command = 'pbpaste'
        else:
            raise Exception("Unsupported operating system")
        
        process = subprocess.Popen(command, stdout=subprocess.PIPE, shell=True)
        output, _ = process.communicate()
        return output.decode('utf-8').strip()
    
    # 其他代码保持不变
    

    通过这样的修改,代码可以在各个操作系统上获取剪切板的内容。请注意,在使用subprocess库调用系统命令时,需要确保你使用的命令在当前系统上是可用的。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月3日
  • 已采纳回答 3月26日
  • 创建了问题 3月24日

悬赏问题

  • ¥15 vba使用jmail发送邮件正文里面怎么加图片
  • ¥15 vb6.0如何向数据库中添加自动生成的字段数据。
  • ¥20 在easyX库下编写C语言扑克游戏跑的快,能实现简单的人机对战
  • ¥15 svpwm波形异常求解答
  • ¥15 STM32——硬件IIC从机通信代码实现
  • ¥15 关于GRSL投稿的疑问
  • ¥15 微生物组数据分析--微生物代谢物
  • ¥30 求一跃动小子保卫主公Java算法实现
  • ¥15 地图软件开发技术答疑(api, 地点获取,外观样式)
  • ¥20 物理远程控制麦克风使用问题