python读取多层嵌套⽂件夹中的⽂件实例
由于⼯作安排,需要读取多层⽂件夹下嵌套的⽂件,⽂件夹的结构如下图所⽰:
想到了递归函数,使⽤python的os.path.isfile⽅法判断当前是不是可执⾏⽂件,如果不是再⽤os.listdir⽅法将⼦⽬录循环判断。
代码如下
import os
path = 'abc'
path_read = []  #path_read saves all executable files
def 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⽂件所以在此加⼀个判断
python怎么读文件夹下的文件夹path_read.append(temp_path)
else:
continue
else:
check_if_dir(file_path + '/' + temp_list_each)  #loop traversal
check_if_dir(path)
#print(path_read)
实现思想就是把所有可执⾏⽂件的路径,通过字符串的拼接,完整的放进⼀个list中,在后⾯的执⾏步骤中依次提取进⾏访问和操作。
由于⾃⼰拿到的数据集中,⼀个⽂件夹下要么全是⽂件夹,要么全是⽂件,所以在第⼀次写这个函数时,通过temp_list[0] 直接判断list中第⼀个⽂件是不是⽂件。
所以⾃⼰第⼀次写的代码有⼀个很⼤的bug,就是当⼀个⽂件夹下既有⽂件夹⼜有⽂件的情况下,会尝试将⼀个⽂件夹按照⽂件读取,报错。
第⼀次代码如下:
import os
path = 'abc'
path_read = []  #path_read saves all executable files
def 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 traversal
check_if_dir(path)  #put all path in path_read
#print(path_read)
以上这篇python读取多层嵌套⽂件夹中的⽂件实例就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。