Python批量生成文件夹树
@原文参考
Excel的结构是这样的,规律可以自己看看
我的代码是这样的,和参考示例差不多:
# coding:utf-8
import xlrd
import os
DIRPATH = os.path.dirname(os.path.realpath(__file__)) #读取当前地址
excelFILE = r".\test.xls" #指定Excel路径
# 获取数据列表
def get_data_by_xls(xlsfile):
'''通过xls文档得到数据列表'''
wb = xlrd.open_workbook(xlsfile)
table = wb.sheets()[0]
rows = table.nrows
for i in range(rows):
yield table.row_values(i)
#根据数据列表创建文件夹
def createDir(dirPath, xList):
'''应用递归,生成文档数'''
try:
rPath = os.path.join(dirPath, xList[0])
try:
os.mkdir(rPath)
rList = xList[1:]
print(os.path.join(DIRPATH,rList))
except:
rList = xList[1:]
createDir(rPath, rList)
except:
pass
#循环调用生成文件夹
for i in get_data_by_xls(excelFILE):
if i:
createDir(DIRPATH, i)
执行代码后生成的文件夹效果是这样的:
这里重点说一下和原博主不一样的地方
- 原文中对文件的引用使用了
sys.argv[]
,这是个啥可以直接百度,我这里为了效果直接使用的r".\test.xls"
,相对引用; - 原文中使用了转码操作,这一步卡了我一晚上,本文中生成对应的文件夹指定的地址是项目自身的路径,然后根据Excel中设定的文件夹名称和等级来创建文件夹并对应层级关系,但是通过
encodeText = lambda a: a.encode("gb2312")
转码后我打印了一下Excel中定义的文件夹名称,是这样的:但是实际上他应该是这样的:
如果使用转码后再组装路径,会出现如下报错:
TypeError: Can't mix strings and bytes in path components
拼装类型错误,因为项目当前地址是正确的中文,但是Excel中设定的路径通过转码后就不再是中文了,两个路径的数据格式不一样,拼装是不可能成功的,所以这里我去掉了原文中的转码操作。
- 我觉得原文中的递归用得绝妙!
想把自己留给生活
想把生活留给你