python实现的目录文件名称读取器

11 阅读3分钟

目录内容读取器 (Directory Content Lister)

这是一个简单的 Python GUI 应用程序,允许用户选择一个计算机上的目录,并列出该目录下的所有文件和文件夹名称。用户还可以将列表内容复制到剪贴板或将其导出为 TXT 文件。

功能介绍

  • 选择目录: 用户可以通过图形界面点击 "选择目录" 按钮,弹出一个标准的文件夹选择对话框,方便地选取目标目录。
  • 列出内容: 选定目录后,程序会在主界面的列表框中清晰地展示该目录下的所有文件和文件夹的名称。
  • 路径显示: 程序会实时显示当前选定的目录路径。
  • 空目录/错误处理:
    • 如果选定的目录为空,程序会提示 "该目录为空"。
    • 如果程序没有权限访问选定目录,会显示错误信息。
    • 如果选择的路径无效,也会有相应的错误提示。
  • 复制列表: 用户可以点击 "复制列表" 按钮,将列表框中显示的所有文件名和文件夹名(每行一个)复制到系统剪贴板。
    • 此功能依赖 pyperclip 库。如果未安装,按钮将被禁用并提示用户安装。
  • 导出到 TXT: 用户可以点击 "导出到 TXT" 按钮,将列表框中的内容保存到一个 .txt 文件中。程序会弹出文件保存对话框,让用户选择保存位置和文件名。
  • 用户友好的界面: 使用 tkinter 构建,界面简洁直观。
  • 可执行文件: 可以使用 PyInstaller 等工具将 Python 脚本打包成独立的 .exe 可执行文件,方便在没有 Python 环境的 Windows 系统上直接运行。

创作过程

  1. 需求分析: 最初的需求是创建一个能够批量读取指定目录下文件/文件夹名称的 GUI 工具,并且能够方便地通过 .exe 文件运行。

  2. 技术选型:

    • GUI 框架: 选择了 Python 内置的 tkinter 库,因为它轻量级、跨平台,并且不需要额外安装复杂的依赖(对于核心功能而言)。
    • 核心逻辑: 使用 Python 的 os 模块 (os.listdir, os.path.isdir) 来进行目录操作和文件系统交互。
  3. 基本功能实现 (v1.0):

    • 创建了主窗口和基本布局。
    • 实现了 "选择目录" 按钮的功能,使用 tkinter.filedialog.askdirectory 获取用户选择的目录。
    • 实现了 list_files_and_folders 函数,用于读取目录内容并将其显示在 tkinter.Listbox 控件中。
    • 添加了基本的错误处理,如路径无效或权限不足。
  4. 增强功能 (v1.1 - 当前版本):

    • 复制到剪贴板:
      • 添加了 "复制列表" 按钮。
      • 引入了 pyperclip 库来实现跨平台的剪贴板操作。
      • 增加了对 pyperclip 是否可用的检查,如果不可用则禁用按钮并提示用户。
      • 实现了 copy_all_items 函数,将列表框内容格式化后复制。
    • 导出到 TXT:
      • 添加了 "导出到 TXT" 按钮。
      • 使用 tkinter.filedialog.asksaveasfilename 让用户选择保存路径和文件名。
      • 实现了 export_to_txt 函数,将列表框内容写入选定的文本文件。
    • UI 改进:
      • 调整了控件布局,增加了用于放置操作按钮的 Frame
      • 当列表为空或发生错误时,禁用 "复制列表" 和 "导出到 TXT" 按钮,以提高用户体验。
      • 增加了窗口的初始大小设置 (root.geometry)。
      • 改进了错误和成功操作的消息提示 (messagebox)。
  5. 打包为可执行文件: 建议使用 PyInstaller.py 脚本打包成 .exe 文件,命令如下:

    pip install pyinstaller
    pyinstaller --onefile --windowed list_files_gui.py
    
    • --onefile: 生成单个可执行文件。
    • --windowed: 运行时不显示控制台窗口(适用于 GUI 应用)。
  6. 文档编写: 创建此 readme.md 文件,详细说明程序的功能、使用方法以及创作过程,方便用户理解和使用。

通过以上步骤,逐步迭代开发,最终形成了当前版本的目录内容读取器。

1.png