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 lob('*.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 islice
def load_dataset(filename):
"""导⼊txt⽂件数据"""
dataset = []  # 保存读取的数据
with open(filename, 'r') as file_obj:  # 打开⽂件
for line in islice(file_obj, 2, None): # 跳过前2⾏数据
if not line:  # 如果存在空⽩⾏则执⾏下⼀次循环,跳过空⽩⾏
continue
line_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 dataset
if __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)  # 遍历⽬标⽂件,读取数据
python怎么读取文件中的数据
dataset.append(data_one)  # 将所有⽂件的数据保存在dataset列表中
作者⽔平有限,⽂中若有错误望⼤家指出,共同学习,共同进步

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