You need to enable JavaScript to run this app. Python如何批量读取多个文件跳过前7行表头并将数据存储到数组中
优惠活动
大模型
产品
解决方案
定价
更多

Python如何批量读取多个文件跳过前7行表头并将数据存储到数组中

批量读取同格式数据文件实现方案

你原有的单文件读取代码存在冗余问题:外层的for line in datafile和内层datafile.readlines()重复遍历了文件内容,可以先简化单文件读取逻辑,再通过封装+批量匹配的方式实现多文件高效读取,具体实现如下:

步骤1:导入依赖模块

import numpy as np
import glob

步骤2:封装单文件读取函数

def read_single_file(file_path, skip_rows=7, col_num=14):
    # 跳过前skip_rows行表头,读取所有数据列
    data = np.loadtxt(file_path, skiprows=skip_rows)
    # 按列拆分对应变量,返回元组
    return (
        data[:, 0], data[:, 1], data[:, 2], data[:, 3],
        data[:, 4], data[:, 5], data[:, 6], data[:, 7],
        data[:, 8], data[:, 9], data[:, 10], data[:, 11],
        data[:, 12], data[:, 13]
    )

这里直接用numpy内置的loadtxt方法,比手动逐行读取更简洁高效,原生支持跳过指定行数、自动转数值类型。

步骤3:批量匹配并读取所有文件

你可以根据自己的文件命名规则调整匹配规则,比如所有数据文件都存在当前目录下,后缀为.txt,就可以这么写:

# 匹配当前目录下所有符合格式的txt文件,可自行修改路径规则,比如'data/*.txt'就是读data文件夹下的所有txt
file_list = glob.glob('./*.txt')
# 初始化存储容器,两种方式二选一即可
# 方式1:用列表按顺序存储,每个元素对应一个文件的所有列数据
all_data = []
# 方式2:用字典存储,键为文件名,值为对应文件的列数据
all_data_dict = {}
for f_path in file_list:
    x0, y1, Z, u, v, V0, V1, Yf, Yo, T, Yp0, Yp1, D, rho = read_single_file(f_path)
    # 按方式1存储
    all_data.append([x0, y1, Z, u, v, V0, V1, Yf, Yo, T, Yp0, Yp1, D, rho])
    # 按方式2存储
    all_data_dict[f_path] = [x0, y1, Z, u, v, V0, V1, Yf, Yo, T, Yp0, Yp1, D, rho]

数据访问示例

  • 用列表存储的话,all_data[i][j]就代表第i个文件的第j列数据,比如all_data[0][0]就是第一个文件的x0列
  • 用字典存储的话,all_data_dict['./random_file.txt'][1]就是对应random_file.txt的y1列
    如果你的文件数量非常大,还可以进一步加多进程读取逻辑,普通场景下上述代码已经足够满足需求,比重复粘贴代码效率高很多,后续新增列或者修改跳过行数,只需要改一次读取函数即可。

内容的提问来源于stack exchange,提问作者Emotional Damage

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 13:54:05