Python脚本每次运行生成不重复命名的文本备份文件问题
解决方案:生成不重复的网页内容备份文件
核心改进方向
- 直接读取剪贴板内容,无需依赖记事本和pyautogui模拟操作,流程更高效稳定
- 生成带时间戳或递增序号的唯一文件名,彻底避免覆盖旧文件
前置准备
先安装pyperclip模块(专门用于读写剪贴板,比pyautogui模拟按键更可靠):
pip install pyperclip
方案1:带日期时间戳的文件名(推荐)
这种方式生成的文件名几乎不会重复,格式类似 Overload_20240520_143508.txt,代码简单直接:
import pyperclip import datetime import os # 获取剪贴板中的网页内容 clipboard_content = pyperclip.paste() # 生成带日期时间的文件名 timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S") filename = f"Overload_{timestamp}.txt" # 写入文件 with open(filename, 'w', encoding='utf-8') as f: f.write(clipboard_content) print(f"文件已保存:{filename}")
方案2:递增序号的文件名(如Overload(1).txt)
如果需要按序号排序备份,可以检查已存在的文件,自动递增序号:
import pyperclip import os # 获取剪贴板内容 clipboard_content = pyperclip.paste() base_name = "Overload" extension = ".txt" file_number = 1 # 循环找到第一个未被使用的序号 while True: filename = f"{base_name}({file_number}){extension}" if not os.path.exists(filename): break file_number += 1 # 写入文件 with open(filename, 'w', encoding='utf-8') as f: f.write(clipboard_content) print(f"文件已保存:{filename}")
原有代码的问题说明
- 用
open('Overload.txt', 'x')仅创建文件,并未将剪贴板内容写入文件;pyautogui.hotkey('ctrl', 'v')是向当前活跃窗口粘贴,和打开的文件对象完全无关 - 模拟记事本操作依赖窗口激活和固定延迟,稳定性差,一旦系统卡顿就会触发错误操作
内容的提问来源于stack exchange,提问作者vee2gee
相关产品推荐
相关产品推荐

