需求说明:读取电脑指定文件夹下所有文件的文件名及其大小(暂时未考虑目录下有文件夹的情况),并且将读到的文件名及其大小写进excel表中
excel表相关操作
将excel相关操作单独写了一个模块,放在operate_excel.py中,包括功能:创建excel同时添加一个sheet,写入数据
"""
__title__ : operate_excel
__time__ : 2019/3/4 16:06
"""
import xlrd
import xlwt
from xlutils.copy import copy
import time
import os
class OperateExcel(object):
def make_workbook(self, sheetname=None,filename=None, filedir=None):
'''
新建一个excel,并且在该excel中添加一个sheet
:param sheetname: 表名
:param filename: excel文件名
:param filedir: 该excel所在路径
:return: 返回excel所在绝对路径,包括文件名,如:D:\F\pyworkspace\lala.xls
'''
if filename == None:
filename = str(self.get_time())
if filedir == None:
filedir = os.getcwd()
if sheetname == None:
sheetname = str(self.get_time())
fileabs = filedir + '\\' + filename + '.xls'
workbook = xlwt.Workbook(encoding='UTF-8')
workbook.add_sheet(sheetname)
workbook.save(fileabs)
return fileabs
def get_time(self):
'''
获取当前时间,取文件名时使用
:return: 返回格式化的时间 如“20190304140634”
'''
date = time.strftime('%Y%m%d%H%M%S',time.localtime(time.time()))
return date
def write_excel(self,fileabs, data):
'''
打开现有excel,按照一定格式写入传入的数据
:param fileabs: excel文档所在绝对路径,如:D:\F\pyworkspace\lala.xls
:param data: 传入的数据,list,格式如[[1,2,3],['a','c','c']]
:return: 无
'''
f=xlrd.open_workbook(fileabs)
fcopy = copy(f)
sheetcopy = fcopy.get_sheet(0)
rows = len(data) # 行数
for i in range(rows):
sheetcopy.write(i, 0, i)
for j in range(len(data[i])): # len(data[i]) 列数
sheetcopy.write(i, j + 1, data[i][j])
fcopy.save(fileabs)
读文件&写入excel
import os
from operate_excel import OperateExcel
class ReadFile(object):
def read_file(self,dir):
'''
读取指定目录下的文件,及其大小
:param dir: 要读取的目录
:return: 返回嵌套列表,存储文件名及其大小,如[['文件A','10KB'],['文件B','16KB']]
'''
file_list = os.listdir(dir)
new_list = []
for i in range(len(file_list)):
file_absdir = dir + '\\' + file_list[i]
file_size = str(int(os.path.getsize(file_absdir)/1024)) + 'KB'
new_list.append([file_list[i],file_size])
return new_list
if __name__ == "__main__":
dir = 'D:\G-文档\Markdown文档'
read_file = ReadFile()
data_list = read_file.read_file(dir)
oe = OperateExcel()
excel_dir = oe.make_workbook(filedir="d:\\")
oe.write_excel(excel_dir,data_list)
输出excel效果
(小声哔哔,关于写文档,语言组织能力还是有待提高~)