我想创建一个文本文件并逐行添加数据。如果文件中已存在数据行,则应忽略该数据行。否则,它应该附加到文件。
答案 0 :(得分:2)
您几乎肯定会更好地阅读该文件并编写新的更改版本。在大多数情况下,它会更快,更容易,更不容易出错并且更具可扩展性。
答案 1 :(得分:1)
如果您的文件不是那么大,您可以这样做:
added = set()
def add_line(line):
if line not in added:
f = open('myfile.txt', 'a')
f.write(line + '\n')
added.add(line)
f.close()
但是如果您不得不担心并发性,大量数据存储在文件中,或者除了快速和一次性之外的其他任何事情,这不是一个好主意。
答案 2 :(得分:0)
我是这样做的,
def retrieveFileData():
"""Retrieve Location/Upstream data from files"""
lines = set()
for line in open(LOCATION_FILE):
lines.add(line.strip())
return lines
def add_line(line):
"""Add new entry to file"""
f = open(LOCATION_FILE, 'a')
lines = retrieveFileData()
print lines
if line not in lines:
f.write(line + '\n')
lines.add(line)
f.close()
else:
print "entry already exists"
if __name__ == "__main__":
while True:
line = raw_input("Enter line manually: ")
add_line(line)
if line == 'quit':
break