Python实现多格式文件预览工具

 更新时间:2025年05月09日 14:18:14   作者:winfredzhang  
这篇文章主要介绍了如何基于 wxPython 的多格式文件浏览与预览工具,支持文件夹选择,最近一天文件筛选,图文文档预览,文件复制等多项实用功能,感兴趣的可以了解下

在日常办公或文件管理场景中,我们经常面临这样的问题:在一个文件夹中短时间内产生了大量不同类型的文件(如图片、PDF、Word、Excel),我们需要快速浏览和筛选这些文件的内容,却不希望一个个打开它们。有没有办法将这些文件集中预览、筛选和操作?

本文将带你打造一个基于 wxPython 的多格式文件浏览与预览工具,支持文件夹选择、最近一天文件筛选、图文文档预览、页码控制、压缩打包、文件复制等多项实用功能。

一、功能概览

该工具具备以下核心功能:

文件夹选择:通过 GUI 选择任意文件夹。

筛选最新文件:自动列出过去 24 小时内修改或创建的文件。

多类型预览支持:

  • 图片(JPG/PNG/BMP/GIF)
  • PDF(支持翻页)
  • Word(.docx,以 HTML 模式显示)
  • Excel(显示为列表控件)

文件复选操作:支持对文件进行勾选,便于批量操作。

文件压缩与复制:将勾选文件打包为 ZIP,或复制到目标文件夹。

分页预览控制:针对 PDF,提供上一页/下一页导航按钮。

二、应用场景

这个工具适用于以下典型场景:

  • 企业文档审核:在文档提交截止前查看最近更新的项目文档。
  • 技术支持或维护日志审核:快速翻阅技术支持部门刚上传的截图、报告、系统日志。
  • 内容策划与编辑:在多媒体内容创作场景中,快速预览当天采集的素材。
  • 文件归档前审查:在正式归档前核查文档内容和格式。

三、界面布局与技术实现

1. 总体结构:SplitterWindow 分割主界面

self.splitter = wx.SplitterWindow(self)
self.left_panel = wx.Panel(self.splitter)
self.right_panel = wx.Panel(self.splitter)
self.splitter.SplitVertically(self.left_panel, self.right_panel)
  • 左侧用于显示文件列表、控制按钮;
  • 右侧用于显示预览内容和翻页控件。

2. 文件筛选逻辑:列出最近 24 小时文件

one_day_ago = time.time() - (24 * 60 * 60)
for root, dirs, filenames in os.walk(folder_path):
    for filename in filenames:
        file_path = os.path.join(root, filename)
        if os.path.getmtime(file_path) >= one_day_ago:
            files.append(file_path)

这段代码遍历目标文件夹及其子目录,只保留“修改时间在过去 24 小时之内”的文件。

3. 多格式文件预览实现

图片预览

img = wx.Image(file_path, wx.BITMAP_TYPE_ANY)
img = img.Scale(preview_size.width, preview_size.height)
self.image_preview.SetBitmap(wx.Bitmap(img))

使用 wx.Image 载入并缩放图像,然后通过 wx.StaticBitmap 显示。

PDF 预览(支持翻页)

self.doc = fitz.open(file_path)
page = self.doc[self.current_page]
pix = page.get_pixmap(matrix=fitz.Matrix(1.5, 1.5))
img = wx.Image(pix.width, pix.height, pix.samples)

借助 PyMuPDF(即 fitz),将 PDF 页渲染成图像,再通过 wxWidgets 展示。

Word 预览

doc = docx.Document(file_path)
html = "<html><body>" + "".join(f"<p>{para.text}</p>" for para in doc.paragraphs) + "</body></html>"
self.doc_preview.SetPage(html)

Word 内容解析为 HTML,再使用 wx.html2.WebView 来显示。

Excel 预览

df = pd.read_excel(file_path)
for i, col in enumerate(df.columns):
    self.excel_preview.InsertColumn(i, str(col))
for index, row in df.iterrows():
    self.excel_preview.InsertItem(index, str(row[0]))

利用 pandas 读取表格并填入 wx.ListCtrl 控件中。

4. 文件压缩与复制按钮(待补充功能)

self.zip_button = wx.Button(button_panel, label="压缩选择文件")
self.copy_button = wx.Button(button_panel, label="复制选择文件")

目前绑定事件函数尚未实现(代码略去),后续可以通过 zipfile.ZipFile 实现 ZIP 操作,使用 shutil.copy 进行文件复制。

运行结果

到此这篇关于Python实现多格式文件预览工具的文章就介绍到这了,更多相关Python文件预览内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python中的round()函数用法详解

    python中的round()函数用法详解

    这篇文章主要给大家介绍了关于python中round()函数用法的相关资料,round()函数是Python内置函数之一,用于对数字进行四舍五入操作,需要的朋友可以参考下
    2023-08-08
  • 浅析python中的set类型

    浅析python中的set类型

    这篇文章主要介绍了python中的set类型,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • Django之choices选项和富文本编辑器的使用详解

    Django之choices选项和富文本编辑器的使用详解

    这篇文章主要介绍了Django之choices选项和富文本编辑器的使用详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • Ubuntu+python将nii图像保存成png格式

    Ubuntu+python将nii图像保存成png格式

    这篇文章主要介绍了Ubuntu+python将nii图像保存成png格式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • Python字典删除键值对和元素的四种方法(小结)

    Python字典删除键值对和元素的四种方法(小结)

    删除列表或者字符串元素的方法不止一种,同样,删除字典元素的方法也不止一种,本文主要介绍python中删除字典元素的四种方法:1、使用del语句;2、使用clear();3、使用pop();4、使用popitem()。感兴趣的可以了解一下
    2021-12-12
  • python import 引用上上上级包的三种方法

    python import 引用上上上级包的三种方法

    这篇文章主要介绍了python import 引用上上上级包的三种方法包的三种方法,需要的朋友可以参考下
    2023-02-02
  • Python使用NumPy进行矩阵计算的案例详解

    Python使用NumPy进行矩阵计算的案例详解

    在Python中进行高效的矩阵计算,NumPy(Numerical Python)库是不可或缺的工具,NumPy通过其强大的N维数组对象ndarray和丰富的矩阵运算函数,将传统Python列表的运算效率提升百倍以上,本文将系统解析如何利用NumPy完成从基础到高级的矩阵计算,需要的朋友可以参考下
    2025-10-10
  • pytest插件的7种用法

    pytest插件的7种用法

    本文主要介绍了pytest插件的7种用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • 对python使用http、https代理的实例讲解

    对python使用http、https代理的实例讲解

    今天小编就为大家分享一篇对python使用http、https代理的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • python结合selenium获取XX省交通违章数据的实现思路及代码

    python结合selenium获取XX省交通违章数据的实现思路及代码

    这篇文章主要介绍了python结合selenium获取XX省交通违章数据的实现思路及代码方法的相关资料
    2016-06-06

最新评论