这篇文章将介绍一款使用 Python 开发的实用工具 - 日期修改器。它可以帮助您轻松修改 Word (.docx) 和 PDF 文档的日期信息,满足日常办公和文档整理的需求。
C:\pythoncode\new\modifyfiledate.py
软件功能
- 支持修改 Word (.docx) 日期信息。
- 允许选择要修改的日期类型,包含“修改日期”和“创建日期”。
- 提供清晰的界面,方便用户选择文件、日期类型和输入目标日期。
- 程序会校验输入的日期格式,确保修改的准确性。
- 操作完成后,软件会弹出消息提示框,告知修改成功与否。
技术实现
日期修改器使用 Python 语言开发,并使用了以下第三方库:
- wxPython: 用于创建用户界面 (GUI)。
- docx: 文档: 用于操作 Word (.docx) 文档。
程序通过 wxPython 创建了一个简洁易用的界面,用户可以在其中选择需要修改的文档、日期类型以及输入目标日期。接下来,程序会根据文件格式调用不同的处理函数,分别使用 docx 库来修改相应的日期属性。
软件使用
- 下载并运行日期修改器程序 (需确保已安装 Python 及相关库)。
- 点击“文件选择”按钮,选择要修改日期的 Word 文档。
- 从下拉框中选择要修改的日期类型 (“修改日期” 或 “创建日期”)。
- 在文本框中输入您想要修改成的目标日期,格式为 “yyyy-mm-dd”。
- 点击“修改”按钮,程序将尝试修改文档日期。
- 修改完成后,程序会弹出消息提示框,告知修改成功与否。
注意: 修改后的文档将覆盖原文件,请确保您拥有文件的备份。
拓展:
- 可以考虑添加功能让用户设置是否覆盖原文件。
- 也可以加入批量修改的功能,提高效率。
全部代码:
import wx
import os
import datetime
from docx import Document
from PyPDF2 import PdfFileReader, PdfFileWriter
class 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)
return
if 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_date
else:
doc.core_properties.created = target_date
doc.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
导入必要的 Python 库,包括 GUI 界面库 wxPython、日期处理库 datetime、Word 文档操作库 docx 。import wx import os import datetime from docx import Document from PyPDF2 import PdfFileReader, PdfFileWriter
- 主类:
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()
。
- 创建 wx 应用程序对象
结语
日期修改器是一款小巧实用的工具,可以帮助您轻松管理文档的日期信息。如果您有此类需求,不妨尝试使用这款软件。