【问题标题】:How to add lines to file only if there aren't duplicates?仅在没有重复项的情况下如何将行添加到文件中?
【发布时间】:2021-05-05 13:27:01
【问题描述】:

我在 Python 中有这段代码,它在给定文件中添加了一行。问题是我想添加这个blazegraph_address 仅当文件中没有相同的行时。如果有,我不需要将地址添加到文件中。其功能代码如下:

def write_to_address_file(blazegraph_address):
    address_path = open("./saved_info/saved_address.txt", "a")

    with open("./saved_info/saved_address.txt") as f:
        seen = set()
        seen.add(f.read())
        print("SEEN",seen)
        if blazegraph_address in seen:
            print("ADDRESS IN SET ALREADY")
        else:
            seen.add(blazegraph_address)
            address_path.write("\n"+str(blazegraph_address))


问题是即使存在重复,该集合也会填充文件内容。如果地址不在文件中,如何仅添加到文件中?

【问题讨论】:

    标签: python file duplicates set append


    【解决方案1】:

    您的代码读取整个文件,而不是逐行读取。 为此,您需要使用以下行创建您的集合:

    修改:

    seen = set()
    seen.add(f.read())
    

    与:

    seen = set(f.read().split('\n'))
    

    【讨论】:

      【解决方案2】:
      def write_to_address_file(blazegraph_address):
          address_path = open("./saved_info/saved_address.txt", "a")
      
          with open("./saved_info/saved_address.txt", "r") as msg:
              data = msg.read().splitlines()
      
          if blazegraph_address in data:
              print("ADDRESS IN SET ALREADY")
          else:
              address_path.write("\n"+str(blazegraph_address))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-05-24
        • 2012-08-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-26
        • 1970-01-01
        相关资源
        最近更新 更多