如何同时访问文件以添加/编辑/删除数据?

时间:2012-01-19 06:07:08

标签: python file-handling filewriter

我想创建一个文本文件并逐行添加数据。如果文件中已存在数据行,则应忽略该数据行。否则,它应该附加到文件。

3 个答案:

答案 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