首页 > 解决方案 > python如何每100步打开2个数据文件

问题描述

比如说,我有 20 个有趣的数据文件,每百步取两个,如下所示:

1.dat, 2.dat, 101.dat, 102.dat, 201.dat, 202.dat.... 2001.dat, 2002.dat

我如何使用open从他们那里获取数据?我写:

for t in range(1,2001, 100) and range(2, 2002, 100):
  f = open( str(t) +'.dat', 'r') 
y = np.array([[float(data) for data in line.split()] for line in f.readlines()])
f.close()

这似乎不起作用,只能range(2,2002,100)读取。

标签: pythonnumpy

解决方案


我会使用zip和的组合itertools.chain

from itertools import chain

for t in chain.from_iterable(zip(range(1,2001,100), range(2, 2002, 100))):
    with open("{}.dat".format(t)) as f:
        y = np.array([[float(data) for data in line.split()] for line in f])

zip给你一个序列(1,2), (101, 102), etcchain.from_iterable将序列“展平”为1, 2, 101, 102, etc.

这个的手动版本可能看起来像

for t in (x for y in range(1,2001,100) for x in (y, y+1)):

或两者的混合:

for t in chain.from_iterable((x, x+1) for x in range(1, 2001, 100)):

推荐阅读