修改文档日期神器 - Python打造日期修改器

ops/2024/11/13 9:21:43/

 这篇文章将介绍一款使用 Python 开发的实用工具 - 日期修改器。它可以帮助您轻松修改 Word (.docx) 和 PDF 文档的日期信息,满足日常办公和文档整理的需求。

C:\pythoncode\new\modifyfiledate.py

软件功能

  • 支持修改 Word (.docx)  日期信息。
  • 允许选择要修改的日期类型,包含“修改日期”和“创建日期”。
  • 提供清晰的界面,方便用户选择文件、日期类型和输入目标日期。
  • 程序会校验输入的日期格式,确保修改的准确性。
  • 操作完成后,软件会弹出消息提示框,告知修改成功与否。

技术实现

日期修改器使用 Python 语言开发,并使用了以下第三方库:

  •  wxPython: 用于创建用户界面 (GUI)。
  • docx: 文档: 用于操作 Word (.docx) 文档。

程序通过 wxPython 创建了一个简洁易用的界面,用户可以在其中选择需要修改的文档、日期类型以及输入目标日期。接下来,程序会根据文件格式调用不同的处理函数,分别使用 docx 库来修改相应的日期属性。

软件使用

  1. 下载并运行日期修改器程序 (需确保已安装 Python 及相关库)。
  2. 点击“文件选择”按钮,选择要修改日期的 Word  文档。
  3. 从下拉框中选择要修改的日期类型 (“修改日期” 或 “创建日期”)。
  4. 在文本框中输入您想要修改成的目标日期,格式为 “yyyy-mm-dd”。
  5. 点击“修改”按钮,程序将尝试修改文档日期。
  6. 修改完成后,程序会弹出消息提示框,告知修改成功与否。

注意: 修改后的文档将覆盖原文件,请确保您拥有文件的备份。

拓展:

  • 可以考虑添加功能让用户设置是否覆盖原文件。
  • 也可以加入批量修改的功能,提高效率。

全部代码:

python">import wx
import os
import datetime
from docx import Document
from PyPDF2 import PdfFileReader, PdfFileWriterclass DateModifierApp(wx.Frame):def __init__(self):super().__init__(parent=None, title='Date Modifier')self.SetSize(400, 300)self.InitUI()def InitUI(self):panel = wx.Panel(self)vbox = wx.BoxSizer(wx.VERTICAL)# 文件选择file_picker = wx.FilePickerCtrl(panel, name='FilePicker')  # 设置名称为 'FilePicker'vbox.Add(file_picker, 0, wx.EXPAND | wx.TOP | wx.BOTTOM, 10)# 日期类型选择date_type_choices = ['修改日期', '创建日期']self.date_type_choice = wx.Choice(panel, choices=date_type_choices)vbox.Add(self.date_type_choice, 0, wx.EXPAND | wx.TOP | wx.BOTTOM, 10)# 目标日期输入date_input = wx.BoxSizer(wx.HORIZONTAL)date_label = wx.StaticText(panel, label='目标日期:')date_input.Add(date_label, 0, wx.RIGHT, 10)self.date_input_ctrl = wx.TextCtrl(panel)date_input.Add(self.date_input_ctrl, 1, wx.EXPAND)vbox.Add(date_input, 0, wx.EXPAND | wx.TOP | wx.BOTTOM, 10)# 修改按钮modify_btn = wx.Button(panel, label='修改')modify_btn.Bind(wx.EVT_BUTTON, self.ModifyDate)vbox.Add(modify_btn, 0, wx.ALIGN_CENTER | wx.TOP | wx.BOTTOM, 10)panel.SetSizer(vbox)def ModifyDate(self, event):file_path = self.FindWindowByName('FilePicker').GetPath()date_type = self.date_type_choice.GetStringSelection()target_date_str = self.date_input_ctrl.GetValue()try:target_date = datetime.datetime.strptime(target_date_str, '%Y-%m-%d')except ValueError:wx.MessageBox('请输入正确的日期格式 (yyyy-mm-dd)', '错误', wx.OK | wx.ICON_ERROR)returnif file_path.endswith('.docx'):self.ModifyDocxDate(file_path, date_type, target_date)elif file_path.endswith('.pdf'):self.ModifyPdfDate(file_path, date_type, target_date)else:wx.MessageBox('只支持 .docx 和 .pdf 文件', '错误', wx.OK | wx.ICON_ERROR)def ModifyDocxDate(self, file_path, date_type, target_date):doc = Document(file_path)if date_type == '修改日期':doc.core_properties.modified = target_dateelse:doc.core_properties.created = target_datedoc.save(file_path)wx.MessageBox('文件日期已成功修改', '成功', wx.OK | wx.ICON_INFORMATION)def ModifyPdfDate(self, file_path, date_type, target_date):with open(file_path, 'rb') as file:reader = PdfFileReader(file)writer = PdfFileWriter()for page_num in range(reader.getNumPages()):writer.addPage(reader.getPage(page_num))if date_type == '修改日期':writer.updateInfo({'/ModDate': target_date.strftime('%Y%m%d%H%M%S')})else:writer.updateInfo({'/CreationDate': target_date.strftime('%Y%m%d%H%M%S')})with open(file_path, 'wb') as new_file:writer.write(new_file)wx.MessageBox('文件日期已成功修改', '成功', wx.OK | wx.ICON_INFORMATION)if __name__ == '__main__':app = wx.App()frame = DateModifierApp()frame.Show()app.MainLoop()

代码分析:日期修改器

简介

日期修改器是一款使用 Python 开发的工具,可以帮助用户修改 Word (.docx)  文档的日期信息。

代码结构

  • 导入库:

    Python

    import wx
    import os
    import datetime
    from docx import Document
    from PyPDF2 import PdfFileReader, PdfFileWriter
    
    导入必要的 Python 库,包括 GUI 界面库 wxPython、日期处理库 datetime、Word 文档操作库 docx
  • 主类: DateModifierApp
    • 初始化方法 __init__():
      • 创建主窗口并设置标题。
      • 调用 InitUI() 方法初始化界面元素。
    • 界面初始化方法 InitUI()
      • 创建面板并使用垂直布局管理器 (wx.BoxSizer) 进行布局。
      • 添加文件选择控件 file_picker,允许用户选择要修改的文档。
      • 添加日期类型选择下拉框 date_type_choice,提供“修改日期”和“创建日期”两种选项。
      • 添加目标日期输入框 date_input_ctrl,用于输入目标日期。
      • 添加“修改”按钮 modify_btn,触发点击事件时调用 ModifyDate() 方法。
    • 修改日期方法 ModifyDate()
      • 获取文件路径、日期类型和目标日期。
      • 校验目标日期格式,如不正确则弹出错误提示框。
      • 根据文件格式调用 ModifyDocxDate()ModifyPdfDate() 方法进行修改。
    • 修改 Word 文档日期方法 ModifyDocxDate()
      • 使用 docx 库打开文档。
      • 根据日期类型修改 core_properties 属性中的相应日期。
      • 保存修改后的文档。
  • 入口函数:
    • 创建 wx 应用程序对象 app
    • 创建主窗口对象 frame 并显示。
    • 启动应用程序事件循环 app.MainLoop()

结语

日期修改器是一款小巧实用的工具,可以帮助您轻松管理文档的日期信息。如果您有此类需求,不妨尝试使用这款软件。


http://www.ppmy.cn/ops/46530.html

相关文章

「架构」单元测试及运用

在参与管理和研发软件项目的过程中,单元测试的实际运用对于确保最终产品的质量至关重要。以下是一些实际运用的案例和说明。 静态测试的实际运用 在TechCorp的电子商务平台项目中,静态测试作为代码质量保证的第一道防线。开发团队在编写代码的同时,使用SonarQube等静态代码…

Rust struct

Rust struct 1.实例化需要初始化全部成员变量2.如果需要实例化对象可变,加上mut则所有成员变量均可变 Rust支持通过已实例化的对象,赋值给未赋值的对象的成员变量 #![allow(warnings)] use std::io; use std::error::Error; use std::boxed::Box; use s…

【杂项】几个快捷键提高你的办公效率(装13使用)

前言 其实在Windows下不同的IDE也支持在文本编辑的时候,让你不需要使用鼠标也能够快速的操作。下面以VSCODE为例子 从当前位置开始选中 shift 键盘下键多行插入 ctrl alt 鼠标下键 退出多行插入esc回到一行文字开头 Home 键,回到一行文字结尾 End。…

新浪测试社招要个25K,第一次面大厂挂了

一面 1、讲下被测系统和你负责测试的模块功能? 2、为什么选择这个测试框架,这个测试框架有什么优缺点? 3、测试文件的目录,包含哪些包,这些之间是怎么调用的? 4、UI自动化和接口自动化都是怎么做的&…

计算机组成原理期末复习

1、RISC与CISC的比较,那种指令集更快? RISC(精简指令集计算机)和CISC(复杂指令集计算机)是两种不同的计算机指令集架构,各有其优缺点。 RISC(精简指令集计算机): RISC指令集的设计理念是通过减少指令的数量和复杂度来提高处理器的执行效率。RISC指令通常在一个时钟周…

【操作与配置】VS2017与MFC环境配置

【操作与配置】VS2017与MFC环境配置 概述 Visual Studio 是一款强大且多功能的集成开发环境(IDE),适用于软件开发人员和团队。使用此应用程序,您可以构建和调试现代Web应用程序,并利用扩展帮助探索几乎任何编程语言。…

轻松拿捏C语言——【文件操作】

🥰欢迎关注 轻松拿捏C语言系列,来和 小哇 一起进步!✊ 🎉创作不易,请多多支持🎉 🌈感谢大家的阅读、点赞、收藏和关注💕 🌹如有问题,欢迎指正 目录 &#x1f…

为什么总是卡在验证真人这里无法通过验证?

最近总是在浏览某些网站的时候卡在这个“确认你是真人”的验证页面,无法通过真人验证,这是怎么回事儿?如何解决呢? 首先,出现这个“确认您是真人”的验证一般都是这个网站使用了 CloudFlare 的安全防护 WAF 规则才会出…