如何在程序仍在运行时同时在文件中写入

时间:2015-07-06 12:37:16

标签: python-2.7

简单来说,我有一个包含重复数字的文件。我想将第一个文件中的唯一数字写入第二个文件。我在“r”模式下打开了第一个文件,在“a +”模式下打开了第二个文件。但看起来在程序运行时第二个文件中没有任何内容会产生错误的输出。任何人都可以帮助我如何解决这个问题。 提前谢谢。

这是我的代码

#!/usr/bin/env python

fp1 = open('tweet_mention_id.txt','r')


for ids in fp1:
    ids = ids.rstrip()
    ids = int(ids)
    print 'ids= ',ids
    print ids + 1
    fp2 = open('unique_mention_ids.txt','a+')
    for user in fp2:
        user = user.rstrip()
        user = int(user)
        print user + 1
        print 'user= ',user
        if ids != user:
            print 'is unique',ids
            fp2.write(str(ids) + '\n')
            break
        else:
            print 'is already present',ids

    fp2.close()

fp1.close()

1 个答案:

答案 0 :(得分:0)

如果unique_mention_ids.txt最初为空,那么您将永远不会进入内循环,也不会写任何内容。您应该使用内部循环来确定是否需要添加id,但是然后在内部循环之外添加(如果有保证)。

类似的逻辑适用于非空文件,但出于不同的原因:当您打开它以进行追加时,文件指针位于文件的末尾,并且尝试读取的行为就像文件是空的一样。您可以通过在内循环之前发出fp2.seek(0)语句来从文件的开头开始。

无论哪种方式:正如所写的那样,你将从第一个文件中为的每个条目写一个给定的id,它不匹配,而不是匹配任何(给定的)文件名,听起来像你想要的)。更糟糕的是,在上面的第二个案例中,你将过度编写任何不匹配的id之后的内容。