我有三个包含所有所需信息的字符串numpy数组(长度均相同)。
我试图以有意义的方式将数组放到我定义为'1RESULTS.txt'的空文本文件中
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
代码
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
temp_str = ' '
temp_bool = False
for (a, b, c) in zip(np_sub1, np_sub2, np_sub3):
with open('1RESULTS.txt', 'w') as f:
temp_bool = False
if a != temp_str:
f.write('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~')
f.write('*****' + a + '*****')
'\n'
f.write(b + '--' + c + ';')
temp_str = a
temp_bool = True
elif (temp_bool == False) and (a == temp_str):
f.write(b + '--' + c + ';')
'\n'
print('Type Unknown: ' + str(counter))
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ p
如果我将“ f.write”替换为“ print”,则输出如下。这就是我想要的1RESULTS.txt的样子,但是仍然空白。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*****42469000730000*****
17456638--Gamma;
2271876.--Resistivity;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*****42469000840000*****
4881574.--Resistivity;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*****42469000850000*****
4881576.--Resistivity;
答案 0 :(得分:1)
with open('1RESULTS.txt', 'w') as f:
这是您的问题,在每次迭代中都一遍又一遍地写入文件,删除了先前的条目。您应该使用
附加到文件with open('1RESULTS.txt', 'a') as f:
编辑: 最好使用如下代码,而不是多次打开和关闭流
temp_str = ' '
temp_bool = False
with open('1RESULTS.txt', 'w') as f:
for (a, b, c) in zip(np_sub1, np_sub2, np_sub3):
temp_bool = False
if a != temp_str:
f.write('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~')
f.write('*****' + a + '*****')
'\n'
f.write(b + '--' + c + ';')
temp_str = a
temp_bool = True
elif (temp_bool == False) and (a == temp_str):
f.write(b + '--' + c + ';')
'\n'
print('Type Unknown: ' + str(counter))
答案 1 :(得分:1)
f
被打开并在每次迭代时重写。因此,只有最后一次迭代会影响文件的内容。将第三行和第四行更改为
with open('1RESULTS.txt', 'w') as f:
(a, b, c) in zip(np_sub1, np_sub2, np_sub3):
...
,它应该可以正常工作。
答案 2 :(得分:0)
with 语句管理 open 函数的上下文,该函数为您处理文件。 您不应将其放入循环中,因为它将为迭代的每个对象创建一个新的上下文。
由于您以“ w”模式打开文件,因此它将覆盖您在上一次迭代中编写的所有内容。