.write()和.writelines()返回空白的.txt文件-PYTHON

时间:2018-07-16 19:30:03

标签: python numpy text-files

我有三个包含所有所需信息的字符串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;

3 个答案:

答案 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”模式打开文件,因此它将覆盖您在上一次迭代中编写的所有内容。