python - 如何通过Python列表中的文件迭代命令(循环)
问题描述
我是 Python 新手。我正在尝试编写一个简短的脚本。我想运行一个循环,在该循环中我必须读取许多文件并为每个文件运行一个命令。特别是,我想通过每个文件的两行进行计算并返回一个输出,其中包含一个引用的名称相关文件。
我能够将文件加载到列表中(“工作”)。我尝试编写第二个单循环来计算我必须对列表中的一个文件进行计算,并且它运行正常。问题是我无法遍历所有文件并从相关文件中获取每个“整数”值。
让我展示一下我尝试做的事情:
import numpy as np
#I'm loading the files that contain the values whith which I want to do my calculation in a loop
work = {}
for i in range(0,100):
work[i] = np.loadtxt('work{}.txt'.format(i), float).T
#Now I'm trying to write a double loop in which I want to iterate the second loop (the calculation) over the files (that don't have the same length) in the list
integr = 0
for k in work:
for i in range(1, len(k[1,:])):
integr = integr + k[1,i]*(k[0,i] - k[0,i-1])
#I would like to print every 'integr' which come from the calculation over each file
print(integr)
当我尝试运行它时,我收到此消息错误:
Traceback (most recent call last):
File "lavoro.py", line 11, in <module>
for i in range(1, len(k[1,:])):
TypeError: 'int' object has no attribute '__getitem__'
先感谢您。
解决方案
我有点猜测,但如果我理解正确,你想work
成为一个列表而不是字典。或者,也许您不想要它,但根据上下文,您当然可以使用列表而不是字典。
这是创建work
列表的方法:
work = []
for i in range(0,100):
work.append(np.loadtxt('work{}.txt'.format(i), float).T)
或者使用上述循环的等效列表推导(通常列表推导更快):
work = [np.loadtxt('work{}.txt'.format(i), float).T for i in range(100)]
现在您可以遍历work
列表进行计算(我假设它们是正确的,我无法检查):
for k in work:
integr = 0
for i in range(1, len(k[1,:])):
integr = integr + k[1,i]*(k[0,i] - k[0,i-1])
请注意,我integr = 0
在循环内部移动,因此对于每个文件,它都重新初始化为 0,否则每个内部循环都将添加到先前内部循环的结果中。
但是,如果那是有意的行为,请移出integr = 0
循环作为您的原始代码。
推荐阅读
- azure-ad-b2c - Azure AD B2C:自定义策略 - 登录不起作用
- istio - 一个虚拟服务能否将请求分散到多个服务
- php - Swift、php 和 unicode 字符
- php - 如何在 Laravel 包 SimpleSoftwareIO/simple-qrcode 中插入一些 QRCode 格式 PNG 的文本?
- jenkins - 将(相同)参数传递给 Jenkins 管道中的多个构建作业
- windows - 对配置了带有 ARR 的 url-rewrite 的站点的 IIS 错误请求
- neo4j - 如何从 Cypher 中的 randomWalk 调用中获取具有关系的路径?
- android - 我们可以在 BuildConfig 中有非公共常量吗?
- elasticsearch - 如何在无痛弹性搜索中创建字典对象并向其添加数据
- java - org.springframework.beans.factory.UnsatisfiedDependencyException:创建名为“bookDaoImpl”的bean时出错