Python实现按目录层级输出文件名并保存为excel

  • Post category:Python

那我就来详细讲解一下“Python实现按目录层级输出文件名并保存为excel”的完整实例教程。

问题描述

在我们的工作或者生活中,经常需要管理大量的文件,其中包括了大量的目录和文件,对于目录中的文件进行归类和记录是非常重要的。我们可以使用Python来轻松实现按目录层级输出文件名并保存为excel的功能,方便我们对文件进行分类,同时也可以在excel中方便的查看和管理。

环境准备

首先,我们需要安装xlwtos模块。

可以使用以下命令进行安装:

pip install xlwt

代码实现

以下是实现“Python实现按目录层级输出文件名并保存为excel”的完整代码:

import os
import xlwt

def write_to_excel(file_list, sheet):
    """
    将目录中的文件列表写入excel表格中
    """
    row = 0
    col = 0
    for file_path in file_list:
        sheet.write(row, col, file_path)
        row += 1

def traverse_folder(root_dir, sheet, level=0):
    """
    遍历目录中的所有文件并输出文件名
    """
    for file_name in os.listdir(root_dir):
        file_path = os.path.join(root_dir, file_name)
        if os.path.isdir(file_path):
            sheet.write(level, 0, file_name)
            traverse_folder(file_path, sheet, level+1)
        else:
            sheet.write(level, 0, file_name)
            sheet.write(level, 1, file_path)

def main():
    """
    程序运行入口
    """
    # 获取当前脚本所在目录的绝对路径
    dir_path = os.path.abspath(os.path.dirname(__file__))
    excel_path = os.path.join(dir_path, 'file_list.xls')
    # 创建一个Excel工作簿
    workbook = xlwt.Workbook(encoding='utf-8')
    # 创建一个工作表对象
    sheet = workbook.add_sheet('file_list')
    # 设置工作表列宽
    sheet.col(0).width = 256*50
    sheet.col(1).width = 256*100
    # 列名
    sheet.write(0, 0, '文件名')
    sheet.write(0, 1, '文件路径')
    # 遍历目录生成文件列表
    traverse_folder(dir_path, sheet)
    # 将文件列表写入Excel表格中
    workbook.save(excel_path)

if __name__ == '__main__':
    main()

该脚本的主要功能为:遍历目录中的所有文件,将文件名和文件路径输出到Excel表格中,并保存为file_list.xls文件。

实例说明

示例1:按目录层级输出文件名

首先创建一个目录,包含多个子目录和文件:

Project
├── folder_1
│   ├── file_1.txt
│   └── file_2.txt
├── folder_2
│   ├── file_3.txt
│   └── file_4.txt
└── file_5.txt

执行脚本之后,会在脚本所在目录生成一个file_list.xls文件,其中包含了目录中所有文件的列表,具体内容如下:

文件名 文件路径
file_1.txt Project/folder_1/file_1.txt
file_2.txt Project/folder_1/file_2.txt
folder_1 Project/folder_1
file_3.txt Project/folder_2/file_3.txt
file_4.txt Project/folder_2/file_4.txt
folder_2 Project/folder_2
file_5.txt Project/file_5.txt
Project Project

从上表中可以看出,文件列表按照目录层级输出,同时包含了文件名和文件路径。

示例2:设置列宽

如果生成的文件列表内容过多,为了方便查看,我们可以设置Excel表格的列宽,使其可以自适应列宽。

添加如下代码:

# 设置工作表列宽
sheet.col(0).width = 256*50
sheet.col(1).width = 256*100

其中,sheet.col(0).width = 256*50表示设置第一列的列宽为50字符宽度。

这里我设置第一列宽度为50,第二列宽度为100。执行脚本之后,生成的文件列表如下:

文件名 文件路径
file_1.txt /Users/demo/Project/folder_1/file_1.txt
file_2.txt /Users/demo/Project/folder_1/file_2.txt
folder_1 /Users/demo/Project/folder_1
file_3.txt /Users/demo/Project/folder_2/file_3.txt
file_4.txt /Users/demo/Project/folder_2/file_4.txt
folder_2 /Users/demo/Project/folder_2
file_5.txt /Users/demo/Project/file_5.txt
Project /Users/demo/Project

从上表中可以看出,设置了列宽之后,文件列表更加美观,同时也更加易于查看。

总结

本文详细讲解了“Python实现按目录层级输出文件名并保存为excel”的完整实例教程,通过这个实例,我们可以了解到如何使用Python对目录中的文件进行遍历和输出,同时也学习了如何使用xlwt模块进行Excel文件的创建和编辑。该实例不仅功能实用,而且运行简单,方便了我们对目录中文件的分类和管理。