引言
在数据处理和管理的日常任务中,经常需要将文件夹中的图片文件信息(如文件名、路径、创建日期、大小、分辨率等)整理成一个 Excel 表格。这篇博客将介绍如何使用 Python 中的 wxPython 模块创建一个 GUI 应用,用户可以通过这个应用选择一个文件夹,并将其中的图片信息导入到 Excel 表格中。
C:\pythoncode\new\jpeginfoTOexcel.py
准备工作
在开始之前,请确保已安装以下 Python 模块:
- wxPython:用于创建 GUI 界面
- openpyxl:用于操作 Excel 文件
- Pillow:用于处理图像文件,获取图片分辨率
使用以下命令安装这些模块:
pip install wxPython openpyxl Pillow
实现步骤
第一步:创建 wxPython 界面
首先,我们需要创建一个简单的 GUI 界面,允许用户选择一个文件夹,并点击按钮生成包含图片信息的 Excel 文件。
import wx
import os
from openpyxl import Workbook
from PIL import Image
from datetime import datetime
class ImageInfoApp(wx.Frame):
def __init__(self, parent, title):
super(ImageInfoApp, self).__init__(parent, title=title, size=(500, 300))
panel = wx.Panel(self)
vbox = wx.BoxSizer(wx.VERTICAL)
self.dir_picker = wx.DirPickerCtrl(panel, message="Choose a directory")
vbox.Add(self.dir_picker, flag=wx.EXPAND | wx.ALL, border=10)
self.generate_btn = wx.Button(panel, label="Generate Excel")
vbox.Add(self.generate_btn, flag=wx.EXPAND | wx.ALL, border=10)
self.Bind(wx.EVT_BUTTON, self.on_generate_excel, self.generate_btn)
panel.SetSizer(vbox)
self.Centre()
self.Show()
def on_generate_excel(self, event):
dir_path = self.dir_picker.GetPath()
if not dir_path:
wx.MessageBox('Please select a directory first', 'Error', wx.OK | wx.ICON_ERROR)
return
# Create a new Excel workbook and select the active worksheet
wb = Workbook()
ws = wb.active
ws.append(['Filename', 'Path', 'Creation Date', 'Size (KB)', 'Resolution'])
for root, dirs, files in os.walk(dir_path):
for file in files:
if file.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp', '.gif')):
file_path = os.path.join(root, file)
creation_date = datetime.fromtimestamp(os.path.getctime(file_path)).strftime('%Y-%m-%d %H:%M:%S')
size = os.path.getsize(file_path) / 1024 # Size in KB
try:
with Image.open(file_path) as img:
resolution = f"{img.width}x{img.height}"
except Exception as e:
resolution = "N/A"
ws.append([file, file_path, creation_date, size, resolution])
save_path = os.path.join(dir_path, 'image_info.xlsx')
wb.save(save_path)
wx.MessageBox(f'Excel file created at {save_path}', 'Success', wx.OK | wx.ICON_INFORMATION)
if __name__ == '__main__':
app = wx.App(False)
frame = ImageInfoApp(None, title='Image Info to Excel')
app.MainLoop()
代码解释
-
导入模块:
wx
:用于创建图形用户界面。os
:用于文件和目录操作。openpyxl
:用于创建和操作 Excel 文件。PIL
(Pillow):用于处理图像文件,获取其分辨率。datetime
:用于处理文件的创建日期。
-
创建 GUI 界面:
ImageInfoApp
类继承自wx.Frame
,是我们的主窗口。- 界面包含一个目录选择器(
wx.DirPickerCtrl
)和一个按钮(wx.Button
),用于选择目录和生成 Excel 文件。 - 按钮绑定了
on_generate_excel
方法,该方法在用户点击按钮时执行。
-
生成 Excel 文件:
- 用户选择目录后,
on_generate_excel
方法会遍历该目录及其子目录中的所有图像文件。 - 获取每个图像文件的名称、路径、创建日期、大小和分辨率,并将这些信息写入到 Excel 文件中。
- 最终生成的 Excel 文件保存在用户选择的目录中。
- 用户选择目录后,
运行程序
将上述代码保存为一个 Python 文件(例如 image_info_to_excel.py
),然后在终端或命令提示符中运行:
python image_info_to_excel.py
此时会弹出一个窗口,用户可以选择一个文件夹,并点击按钮生成包含图片信息的 Excel 文件。
总结
通过这篇博客,我们学习了如何使用 wxPython 创建一个 GUI 应用,从文件夹中提取图片信息并将其导入到 Excel 表格中。这种方法不仅可以用于图片文件,还可以根据需要扩展到其他类型的文件数据提取和整理。如果您有任何问题或建议,欢迎在评论区留言。