仅存储上次从外部文件返回的数据



我必须创建一个名为'user_generator'的程序,该程序将登录作为参数,并将此登录存储在名为'login .db'的外部文件的末尾。

我的问题是:当我使用函数'writelines'到'login .db'时,这个文件只返回最后的输入数据。这是我所做的:

import sys

new_logins = sys.argv[0]
logins = sys.argv[1:]
count = len(logins)
f=open('logins.db','w')
logins=map(lambda x:x+'n', logins)
f.writelines(logins)
logins = []
with open('logins.db', 'r') as filehandle:
for line in filehandle:
current_login = line[:-1]
logins.append(current_login)

有些人告诉我使用SQL函数,但我真的不认为在这种情况下真的需要它。你觉得呢?

编辑:正如预期的那样,感谢你,它工作了,我可以学习更多关于Python的知识。然而,我不理解第一行"new_login = sys.argv[0]"的效用,因为没有它它也能工作。你能告诉我它对什么事情很重要吗?谢谢。

问题是在您再次打开文件以读取它之前从未关闭过该文件。在重新打开文件之前,您需要在文件上使用close()函数:

import sys

new_logins = sys.argv[0]
logins = sys.argv[1:]
count = len(logins)
f=open('logins.db','w')
logins=map(lambda x:x+'n', logins)
f.writelines(logins)
f.close()
logins = []
with open('logins.db', 'r') as filehandle:
for line in filehandle:
current_login = line[:-1]
logins.append(current_login)

或者直接使用with块,就像你读的那样:

import sys

new_logins = sys.argv[0]
logins = sys.argv[1:]
count = len(logins)
logins=map(lambda x:x+'n', logins)
with open('logins.db', 'w') as f:
f.writelines(logins)
logins = []
with open('logins.db', 'r') as filehandle:
for line in filehandle:
current_login = line[:-1]
logins.append(current_login)

最新更新