遍历文件操作
首先,对于遍历文件夹下所有文件,本文使用了os.walk()函数
该函数通过递归的方式访问所有子文件以及其文件。\
例如有文件夹目录如下:
C是B的子文件夹,B、D是A的子文件夹
A文件夹包括A-1.txt、A-2.hml
B文件夹包括B-1.txt、B-2.pdf
C文件夹包括C-1.txt、C-2.ppt
D文件夹包括D-1.txt
A文件夹
A-1.txt
A-2.hml
B文件夹
B-1.txt
B-2.pdf
C文件夹
C-1.txt
C-2.ppt
D文件夹
D-1.txt
遍历结果将是:A-1.txt、A-2.hml、D文件夹、D-1.txt、B文件夹、B-1.txt、B-2.pdf、C文件夹...
or root, dirs, files in os.walk(path):
os.walk(path),返回3个变量:当前目录, 当前目录下的子文件夹, 当前目录下的文件
输出到excel
使用xlwt库
使用函数your_excel.write()函数输入,write()函数有三个输入,row_y、col_x、data
意思是,在第row_y行,第col_x列,输入数据为data
import xlwt
# 创建一个Excel文件对象
workbook = xlwt.Workbook()
# 添加一个sheet页
worksheet = workbook.add_sheet('Sheet1')
#初始化excel
columns = ["road","name","size(MB)"]
for col,column in enumerate(columns):
worksheet.write(0,col,column)
修正过程
excel有最大行数限制,比如说我的是65535行,那么需要对后续进行处理
#行数+1
row = row+1
#修正溢出
if row >= 65536:
row = row - 65535
bias = bias + 4
print("bias=",bias)
#对excel第一行进行更新
for col,column in enumerate(columns):
worksheet.write(0,col+bias,column)
注意:需要在行数+1的后面马上进行行数的检测
全部代码
# -*- coding:utf-8 -*-
import os
import xlwt
import math
##########
#配置修改
#根目录修改
dir_path = input("please input road:")
#excel 文件最大行数65535,每过65535个文件,后续文件将会 从头开始,列数右移4位
##########
print('root:', dir_path)
# 创建一个Excel文件对象
workbook = xlwt.Workbook()
# 添加一个sheet页
worksheet = workbook.add_sheet('Sheet1')
#初始化excel
columns = ["road","name","size(MB)"]
for col,column in enumerate(columns):
worksheet.write(0,col,column)
def traverse_dir(path):
row =1
bias = 0
print('result:')
#递归遍历文件
for root, dirs, files in os.walk(path):
print(row)
for file in files:
#获取文件大小
size = os.path.getsize(root+'\\'+file)
#保存文件一行的数据,[目录,文件名,大小]
column_temp = [root,file,size/1024*1024]
for col,column in enumerate(column_temp):
worksheet.write(row,col+bias,column)
#行数+1
row = row+1
#修正溢出
if row >= 65536:
row = row - 65535
bias = bias + 4
print("bias=",bias)
for col,column in enumerate(columns):
worksheet.write(0,col+bias,column)
#开始递归遍历
traverse_dir(dir_path)
# 保存Excel文件
workbook.save('example-D3.xls')