python - 生成带有循环值的文本文件
问题描述
所以我有一个相当复杂的问题,至少对我来说,我正试图在 python 中调和。我已经在纸和笔上写出了问题,但开始时遇到了麻烦。
本质上,我试图在 python 中自动制作 280 个文本文件,它们是相似的,有 3 个参数不同。最多 3 个参数中的 2 个一次更改。
所以我的三个参数是 i = [1, 2, 3, 4, 5, 6, 7, 8] , j = [1.0, 0.5, 0.3, 0.1, 0.075, 0.05, and 0.025] 和 k = [ 0、15、30、45、60、75、82.5]。潜在的输出看起来与此非常相似:
title 文件名 geometry 1 (i 的值) 1 1.0 info (j 的值) direction (k 的值) 这里是另一个字符串 这里是另一个字符串
所以问题迭代的方式是 i 将在 1,j 将变为 1.0,然后 k 将通过其 0 到 82.5 的集合。一旦发生这种情况,i 仍将是 1,j 会变为 0.5,并且 k 会再次运行它的值。现在每个迭代更改都保存为自己的文本文件。
那么第一个文本文件将是 i=1, j=1.0, k=0.0。第二个文本文件将是 i=1, j=1.0, k=15.0。它会走下坡路。我正在考虑做一个三重嵌套的 for 循环,但是我不太确定如何有效地设置它,然后在每次迭代后保存,同时保持上面括号中的内容不变。
任何见解都会非常有帮助。我仍然是新手,但我遇到了这样的问题。去图对吧?
多谢你们!
解决方案
所以据我了解,下面的代码将帮助您为 i、j、k 的每个组合创建文件
i = [1,2,3,4,5,6,7,8]
j = [1.0, 0.5, 0.3, 0.1, 0.075, 0.05, 0.025]
k = [0, 15, 30, 45, 60, 75, 82.5]
file_path = '\dir\folder\'
file_header = "Field1 Field2 Field3"
for i_val in i:
for j_val in j:
for k_val in k:
file_content = ' '.join([str(x) for x in [i_val, j_val, k_val]])
with open(file_path + 'geometry' + str(i_val) + '.txt', 'w') as file:
file.write(file_header)
file.write(file_content)
除了使用 for 循环之外,您还可以通过使用itertools.product
一次性为您提供所需列表组合的函数来使您的代码更加 Pythonic。
SO评论后的代码更新:
from itertools import product
i = [1,2,3,4,5,6,7,8]
j = [1.0, 0.5, 0.3, 0.1, 0.075, 0.05, 0.025]
k = [0, 15, 30, 45, 60, 75, 82.5]
file_path = '\dir\folder\'
file_header = "Field1 Field2 Field3\n"
content = list(product(*[i, j, k]))
for file_count, val in enumerate(content):
print(val) # for your reference
file_content = ' '.join([str(x) for x in val])
#print(file_content)
with open(file_path + "geometry" + str(file_count+1) + ".txt", "w") as file:
file.write(file_header)
file.write(file_content)
现在,这将在上述路径中生成名称为geometry#的文件,其中 # 是文件数
使用您的输入列表,这将总共生成 392 个文件...我希望这是您所期望的...
推荐阅读
- java - 在不使用 AWS 开发工具包或 CLI 工具的情况下使用 AWS KMS 公钥进行加密
- python - 在我的单元测试中监视纯函数调用
- pointers - 是否可以分配一个未命名的内存,然后在 fortran 中关联指针?
- maven - 从 jar 文件运行黄瓜测试时,获取“线程“主”java.lang.NoClassDefFoundError:io/cucumber/core/cli/Main 中的异常”
- javascript - 如何从屏幕底部为 div 设置动画
- angular - Angular - 如何测试应该被召回的服务,直到它回复OK?
- three.js - 修改器移除变形目标 GLTF
- python - 我们可以定义 UDF 以从 Spark Dataframe 中提取特征(例如:均值)吗?
- javascript - 在嵌套文档内的数组中选择对象
- machine-learning - 如何为 ML.Net MulticlassClassification 矩阵指定权重?