时间:2021-05-22
由于工作安排,需要读取多层文件夹下嵌套的文件,文件夹的结构如下图所示:
想到了递归函数,使用python的os.path.isfile方法判断当前是不是可执行文件,如果不是再用os.listdir方法将子目录循环判断。
代码如下
import ospath = 'abc'path_read = [] #path_read saves all executable filesdef check_if_dir(file_path): temp_list = os.listdir(file_path) #put file name from file_path in temp_list for temp_list_each in temp_list: if os.path.isfile(file_path + '/' + temp_list_each): temp_path = file_path + '/' + temp_list_each if os.path.splitext(temp_path)[-1] == '.log': #自己需要处理的是.log文件所以在此加一个判断 path_read.append(temp_path) else: continue else: check_if_dir(file_path + '/' + temp_list_each) #loop traversalcheck_if_dir(path)#print(path_read)实现思想就是把所有可执行文件的路径,通过字符串的拼接,完整的放进一个list中,在后面的执行步骤中依次提取进行访问和操作。
由于自己拿到的数据集中,一个文件夹下要么全是文件夹,要么全是文件,所以在第一次写这个函数时,通过temp_list[0] 直接判断list中第一个文件是不是文件。
所以自己第一次写的代码有一个很大的bug,就是当一个文件夹下既有文件夹又有文件的情况下,会尝试将一个文件夹按照文件读取,报错。
第一次代码如下:
import ospath = 'abc'path_read = [] #path_read saves all executable filesdef check_if_dir(file_path): temp_list = os.listdir(file_path) #put file name from file_path in temp_list if os.path.isfile(file_path + '/' + temp_list[0]): #此处直接判断list中第一项是不是文件 for temp_list_each in temp_list: temp_path = file_path + '/' + temp_list_each if os.path.splitext(temp_path)[-1] == '.log': path_read.append(temp_path) else: continue else: for temp_list_each in temp_list: check_if_dir(file_path + '/' + temp_list_each) #loop traversalcheck_if_dir(path) #put all path in path_read#print(path_read)以上这篇python读取多层嵌套文件夹中的文件实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
java读取某个文件夹下的所有文件学习java基础知识,读取文件,读取某个文件夹,需要读取所有文件,如何实现呢,看下实例代码。实例代码:importjava.i
本文实例讲述了php读取出一个文件夹及其子文件夹下所有文件的方法。分享给大家供大家参考,具体如下:今天的需求要在一个文件夹中读取出这个文件夹下所有的文件,当然也
首先在文件夹中添加_init_.py文件,即使是空文件也可以,多层文件夹,每层文件夹中都要添加。比如我要import,a文件夹中,b文件夹下的c.py我就需要在
Java读取其下所有文件夹与文件的路径,具体内容如下如果在f:\aa文件夹中,有如下图的文件夹与文件:那么,在Java中,则如此读取f:/aa下的所有文件路径:
Python批量替换文件内容,支持嵌套文件夹importospath="./"forroot,dirs,filesinos.walk(path):forname