Python遍历文件夹 寻找目标文件 读取txt文件数据
python中想要读取多个文件的数据时,首先便是要获取目标文件的路径名称。而遍历文件夹寻找目标文件可通过os或pathlib库实现,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列表中
作者水平有限,文中若有错误望大家指出,共同学习,共同进步
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
