我有一些代码可以在无限循环中创建x变量(帧)和y变量(像素强度),直到程序结束。我想将每个循环的这些值附加到txt.file中,以便以后可以使用数据。数据以numpy数组的形式出现。
例如说5个循环(5帧)后我得到这些值
1 2 3 4 5 (x values)
0 0 8 0 0 (y values)
我希望它在每个循环中将它们附加到文件中,以便在关闭程序后得到:
1, 0
2, 0
3, 8
4, 0
5, 0
最快的方法是什么?
到目前为止,我已经尝试过np.savetxt('data.txt', x)
,但这只会将最后一个值保存在循环中,并且不会在每个循环中添加数据。有没有一种方法可以更改此功能,或者可以使用其他功能将数据添加到txt文档中。
答案 0 :(得分:2)
首先,我将这些值压缩到(x,y)坐标形式中并将它们放入列表中,以便将它们附加到文本文件中变得更加容易,在您的程序中,您将不需要这样做,因为事先在循环中生成了x和y。
x = [1, 2, 3, 4 ,5] #(x values)
y = [0, 0, 8, 0, 0] #(y values)
coordinate = list(zip(x,y))
print(coordinate)
因此,我使用了Zip函数,将样本结果作为(x_n,y_n)存储到列表中以备后用。
这是我要在文本文件中附加以下for循环的内容(在终端显示中)
在循环本身中,您可以使用:
for element in coordinate: #you wouldn't need to write this since you are already in a loop
file1 = open("file.txt","a")
file1.write(f"{element} \n")
file1.close()
答案 1 :(得分:0)
您可以执行以下操作-它不完整,因为它只会附加到旧文件中。另一个问题是,在关闭文件之前,它实际上不会写入文件。如果您确实需要每次在循环中保存文件,则需要另一种解决方案。
private void Output_Class(IEnumerable<Demo_Interface> inter_input)
{
// do your thing
}
// Method invocation
Output_Class(new_main_class.class_list_1);
如果不需要为循环中的每个步骤编写文件,则建议使用此选项。它要求Numpy数组的大小相同。
import numpy as np
variable_to_ID_file = 3.
file_name_str = 'Foo_Var{0:.0f}.txt'.format(variable_to_ID_file)
# Need code here to delete old file if it is there
# with proper error checking, or write a blank file, then open it in append mode.
f_id = open(file_name_str, 'a')
for ii in range(4):
# Pick the delimiter you desire. I prefer tab '/t'
np.savetxt(f_id, np.column_stack((ii, 3*ii/4)), delimiter=', ', newline ='\n')
f_id.close()