Python遍历文件夹 寻找目标文件 读取txt文件数据

         python中想要读取多个文件的数据时,首先便是要获取目标文件的路径名称。而遍历文件夹寻找目标文件可通过ospathlib库实现,pathlib相对来说代码更为精炼,本文将使用pathlib实现文件夹遍历,并以txt文件为例寻找目标文件,读取数据。

文件夹遍历

首先导入库函数,遍历指定文件夹下所有指定类型的文件(txt为例)

from pathlib import Path  # 导入库def find_all_files(files_path):"""遍历指定文件夹所有指定类型文件"""p = Path(files_path)files_names = []  # 存储文件路径名称for file in p.rglob('*.txt'):  # 寻找所有txt文件files_names.append(str(file))  # 以字符串形式保存return files_names files_path = 'E:/Desktop/GitHub'  # 文件夹
files_names = find_all_files(files_path)  # 获取所有文件路径名称

寻找目标文件

在上述所有txt文件中寻找符合条件的目标文件,比如命名符合一定规则的文件

def object_files(files_names, key_word):"""找出目标文件"""files = []  # 存储符合条件的目标文件路径名称for i in files_names:  # 遍历所有文件if key_word in i:  # key_word表示文件命名中存在的关键词 可根据关键词筛选文件files.append(i)  # 若文件名称中存在关键词 则将其保存在列表中return files  # 返回目标文件路径名称# 例如每次实验数据都保存一个文件夹,第一个样本数据命名为'obj_1'
# 则可通过设置'obj_1'关键词找出第一个样本的多次实验数据
files_path = 'E:/Desktop/GitHub'  # 文件夹
key_word = 'obj_1'  # 关键词
files_names = find_all_files(files_path)  # 所有文件路径名称
object_files_names = object_files(files_names, key_word)  # 目标文件路径名称

找出所有目标文件名称,则可以遍历实现读取其中的数据,不用一个个手动输入

读取txt文件数据

txt文件中第一行通常是数据名称,可通过itertllos.islice跳过前n行,不读取前n行数据

import numpy as np
from itertools import islicedef load_dataset(filename):"""导入txt文件数据"""dataset = []  # 保存读取的数据with open(filename, 'r') as file_obj:  # 打开文件for line in islice(file_obj, 2, None): # 跳过前2行数据if not line:  # 如果存在空白行则执行下一次循环,跳过空白行continueline_arr = []  # 用于存储每一行的数据# 将每一行数据按照空格分开 若是逗号则为line.split(',')for i, data in enumerate(line.split()):if i < 10:  # 数据截止在第10列 i表示第几个数据data_value = data.strip()  # 删除数字两边的空格line_arr.append(str(data_value))  # 若文件中有字符,则需字符串格式保存 dataset.append(line_arr)  # 将每一行数据保存dataset.pop(-1)  # 若最后一行数据不完全,则可删除dataset = np.array(dataset)  # 列表转换为数组# 若文件中存在不需要的数据,则可进行删减;或者需要一些数据处理等操作dataset = np.delete(dataset,[0,1,3], axis=1)  # 删除不需要的列dataset = dataset.astype(float)  # 将字符串转换为浮点数dataset[:, 4:7] = dataset[:, 4:7] * np.pi / 180  # 角度换算弧度 return datasetif __name__ == '__main__':files_path = 'E:/Desktop/GitHub'  # 文件夹key_word = 'obj_1'  # 关键词files_names = find_all_files(files_path)  # 所有文件路径名称object_files_names = object_files(files_names, key_word)  # 目标文件路径名称dataset = []  # 用于存储数据for filename in object_files_names:  data_one = load_dataset(filename)  # 遍历目标文件,读取数据dataset.append(data_one)  # 将所有文件的数据保存在dataset列表中

        作者水平有限,文中若有错误望大家指出,共同学习,共同进步


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部