python - 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)
读取。
解决方案
我会使用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), etc
。chain.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)):
推荐阅读
- c - 用系列计算 pi
- oracle - 如何验证弹出 lov 的数据在 Oracle Apex 中是否已更改
- amazon-web-services - fullpage.js 插件不工作 net::ERR_ABORTED 403(禁止)
- java - 将标头添加到 ChannelHandlerContext (Netty) 触发的响应中
- html - 如何在html中的动态大小图像上放置一些动态大小的链接?
- windows - 使用 ffmpeg 将 LiveVideo 发送到 Http 服务器
- java - 需要交替使用 SSL Mutual Authentication 和密码认证两种方式
- sql-server-2008 - SQL Server 查询垂直堆叠列以求和,具有多个变量
- python - MRJob 将输出保存在文件中
- angular - Angular 通用加载器组件