python读取多层嵌套文件夹中的文件实例
由于工作安排,需要读取多层文件夹下嵌套的文件,文件夹的结构如下图所示:
想到了递归函数,使用python的os.path.isfile方法判断当前是不是可执行文件,如果不是再用os.listdir方法将子目录循环判断。
代码如下
importos path='abc' path_read=[]#path_readsavesallexecutablefiles defcheck_if_dir(file_path): temp_list=os.listdir(file_path)#putfilenamefromfile_pathintemp_list fortemp_list_eachintemp_list: ifos.path.isfile(file_path+'/'+temp_list_each): temp_path=file_path+'/'+temp_list_each ifos.path.splitext(temp_path)[-1]=='.log':#自己需要处理的是.log文件所以在此加一个判断 path_read.append(temp_path) else: continue else: check_if_dir(file_path+'/'+temp_list_each)#looptraversal check_if_dir(path) #print(path_read)
实现思想就是把所有可执行文件的路径,通过字符串的拼接,完整的放进一个list中,在后面的执行步骤中依次提取进行访问和操作。
由于自己拿到的数据集中,一个文件夹下要么全是文件夹,要么全是文件,所以在第一次写这个函数时,通过temp_list[0]直接判断list中第一个文件是不是文件。
所以自己第一次写的代码有一个很大的bug,就是当一个文件夹下既有文件夹又有文件的情况下,会尝试将一个文件夹按照文件读取,报错。
第一次代码如下:
importos path='abc' path_read=[]#path_readsavesallexecutablefiles defcheck_if_dir(file_path): temp_list=os.listdir(file_path)#putfilenamefromfile_pathintemp_list ifos.path.isfile(file_path+'/'+temp_list[0]):#此处直接判断list中第一项是不是文件 fortemp_list_eachintemp_list: temp_path=file_path+'/'+temp_list_each ifos.path.splitext(temp_path)[-1]=='.log': path_read.append(temp_path) else: continue else: fortemp_list_eachintemp_list: check_if_dir(file_path+'/'+temp_list_each)#looptraversal check_if_dir(path)#putallpathinpath_read #print(path_read)
以上这篇python读取多层嵌套文件夹中的文件实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。