首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Python上使用循环读取多个数据文件

在Python上使用循环读取多个数据文件
EN

Stack Overflow用户
提问于 2015-06-01 10:28:31
回答 2查看 4K关注 0票数 0

您好,我有超过200个数据文件与名称相似的名称,如abc.20.0000.catalog.out,abc.20.1000.catalog.out,abc.20.2000.catalog.out ......abc.40.0000.catalog.out

每个文件都包含如下数据

代码语言:javascript
运行
复制
   Group catalog for redshift  18.1000
 1) group ID
 2) group mass (Msun/h)
 3- 5) initial position (Mpc/h)
 6- 8) final position (Mpc/h)
 9-11) velocity (km/s)
 12) number of particles  

250103187  0.227591E+08 1.86  1.03  2.51  1.65  1.06  2.53  -47.56  7.50  3.83    328
202456030  0.167918E+08 0.29  4.57  2.02  0.23  4.63  2.14  -13.27  10.67 3.68    242
89479147  0.763262E+06  1.47  4.80  0.89  1.34  4.83  0.99  -28.90  6.20  17.30    11 

每个这样的文件包含超过10^6行。

我想做以下事情: 1.我想从每个文件中读取数据,并删除顶部的文本。2.然后我想将所有这些文件中的数据存储到一个矩阵的大列表中,每个矩阵都是来自每个文件的数据。

EN

回答 2

Stack Overflow用户

发布于 2015-06-01 10:35:16

这是一个Python/Pandas解决方案:

代码语言:javascript
运行
复制
import pandas as pd
import glob

L = []
for f in glob.glob('abc*'):       
   df = pd.read_csv(f,skiprows=1)
   L.append(df.values)
票数 0
EN

Stack Overflow用户

发布于 2015-06-01 13:09:51

这里是第1部分:

一段特别有用的代码是:'abc.{0}000.catalog.out'.format(someString)。无论someString是什么,{0}都充当占位符。因此,要读取所有文件并擦除顶部文本,您可能需要执行以下操作:

代码语言:javascript
运行
复制
for i in range(200, 401):
    file_name = 'abc.{0}000.catalog.out'.format(str(i)[:2] + '.' + str(i)[2:])

    with open(file_name) as file:
        wanted_lines = file.readlines()
    with open(file_name, 'w+') as file:
         string = ''
         for lines in wanted_lines[8:]:
             string += lines
         file.write(string)

然后我想把所有这些文件中的数据存储到一个大的矩阵列表中,每个矩阵都是这些文件中的数据。,

  • 你必须澄清你正在谈论的内容,或者举一个例子。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30564840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档