python批量操作文件-建立文件树目录

实现思路

  1. 实现对文件的遍历
  2. 将所有文件在表格中以文件树样式展现
  3. 实现文件/文件夹的超链接

代码实现

import os
import openpyxl
from openpyxl import Workbook
from openpyxl.styles import Font, Color

def get_filename(dirname):
    
    column0 = dirname.count('\\')
    #创建工作簿    
    wb = Workbook()
    
    #创建sheet
    sheet1 = wb.create_sheet(title="Data")
      
    row = 1
    #循环获取根目录,根目录下的文件及文件夹
    for roots, dirs, files in os.walk(dirname):
        #print(roots)
        #计算不同层级文件的列数
        column = roots.count('\\')
        column = column - column0+1
        
        #获取文件夹名
        
        root_name = roots.split('\\')[-1]
        #生成文件夹的超链接
        rowB = '=hyperlink("' + roots  + '","' + root_name + '")'
        sheet1.cell(row=row,column=column).value=rowB
        #设置单元格的颜色
        ft = Font( color='FF0000')
        sheet1.cell(row=row,column=column).font = ft

        column = column + 1
        for file in files:
            #获取文件并将其设定为超链接
            if file[0] != '.' and '~'not in file:
                #print(file)
                row = row + 1
                rowB = '=hyperlink("' + roots + '\\' + file + '","' + file + '")'
                sheet1.cell(row=row,column = column).value=rowB
                
        row =row+1
        
     #删除创建工作簿自动生成的sheet
     #若要使用改sheet
     #可以通过以下实现
     #sheet1 =  wb.active 
     #sheet1.title = "自动生成的sheet"
    del wb['Sheet']   
    wb.save("get_file.xlsx")         


if __name__ == '__main__':
   #将文件夹路径作为参数传入
    get_filename(r'D:\0000数据库\11个人资料及作业\嵌入式\嵌入式系统课程设计')

实现效果

该代码实现后生成的excel 红色为文件夹 黑色为该文件夹下的文件

代码解读

  • os.walk(top, topdown=True, οnerrοr=None, followlinks=False)
    通过该函数可以得到一个三元tupple(dirpath, dirnames, filenames), 第一个为起始路径,第二个为起始路径下的文件夹,第三个是起始路径下的文件。dirpath 是一个string,代表目录的路径,dirnames 是一个list,包含了dirpath下所有子目录的名字。filenames 是一个list,包含了非目录文件的名字。
import os
import openpyxl
from openpyxl import Workbook
from openpyxl.styles import Font, Color
def get_filename(dirname):
    
    for roots, dirs, files in os.walk(dirname):
        print(roots)
        print(dirs)
        print(files)
        print('\n')

if __name__ == '__main__':
   
    get_filename(r'D:\0000数据库\11个人资料及作业\嵌入式\嵌入式系统课程设计')

程序运行结果(部分)

D:\0000数据库\11个人资料及作业\嵌入式\嵌入式系统课程设计
['boa', 'web控制例程']
['BOA-流程分析.pdf', 'boa的移植和cgi编译过程.doc', '~$a的移植和cgi编译过程.doc', '~$式系统课程设计要求.doc', '嵌入式系统课程设计要求.doc']


D:\0000数据库\11个人资料及作业\嵌入式\嵌入式系统课程设计\boa
['contrib', 'docs', 'examples', 'extras', 'src']
['boa.conf', 'ChangeLog', 'CREDITS', 'Gnu_License', 'mime.types', 'README']


D:\0000数据库\11个人资料及作

结论
由此可见,每次循环获取的roots的数据格式为string 是根目录 dirs为roots下的文件夹,files为roots下的文件

  • openpyxl.Workbook()的相关操作

工作簿

创建工作簿:wb = Workbook()
保存工作簿:wb.save("FileTrace.xlsx")

sheet

自动生成的sheet: ws = wb.active
为sheet命名:ws.title = "worksheettitle"
创建新的sheet:sheet1 = wb.create_sheet(title="Data")
删除sheet:del wb['Sheet']

单元格

为单元格赋值:sheet1.cell(row=row,column=column).value=roots
             ws["A1"] = "HOGE"
             rows = [
				["张三", "男", "8k"],
				["李四", "女", "9k"],
				["刘能", "男", "10k"],]
 for row in rows:
 ws.append(row)
设置单元格文字颜色:ft = Font( color='FF0000')
                  ws.cell(row=row,column=column).font = ft
为单元格设定超链接: rowB = '=hyperlink("' + roots + '\\' + file + '","' + file + '")'  
                  sheet1.cell(row=row,column = column).value=rowB
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值