如何将单独列表的所有项目写入单个文件
How to write all the items of a separate lists to a single file
我已经从数据库中制作了两个列表。一个电子邮件列表和另一个密码列表。我正在尝试使用将列表写入文件。使用以下代码,但只有列表的最后一项被写入文件
from app import db
from app import Users
filtered_users = []
all_users = Users.query.all()
filtered_users = all_users.copy()
# print(filtered_users)
for user in filtered_users:
`filtered_emails = []`
`filtered_passwords = []`
`filtered_emails.append(user.email)`
`filtered_passwords.append(user.password)`
`# print(filtered_emails, filtered_passwords)`
with open("users.txt", "w") as f:
`for email in filtered_emails:`
`for password in filtered_passwords:`
`#print(email, password)`
`print(email, password, file=f)`
你可以试试用'a'代替'w',因为'w'的方式会删除所有信息,从第一行开始写。
filtered_emails = ['xx@xx.com','yyy@yy.com','zzz@zz.com']
filtered_passwords = ['1','2','345']
with open("users.txt", "w") as f:
for item in zip(filtered_emails,filtered_passwords):
f.write(item[0]+' ')
f.write(item[1]+'\n')
假设所有条目都是字符串。zip
返回一个 tuple
的用户名并且 passwords.you 可以使用 itertools.izip_longest
如果你想处理长度不等的列表
输出:
xx@xx.com 1
yyy@yy.com 2
zzz@zz.com 345
您的循环会在每次迭代时重置 filtered_emails
和 filtered_passwords
。你至少应该删除它。在编写时,您使用嵌套循环(每个电子邮件对应每个密码),同时电子邮件和密码应该绑定。
你应该这样做:
filtered_users = []
all_users = Users.query.all()
filtered_users = all_users.copy()
# print(filtered_users)
for user in filtered_users:
filtered_emails.append(user.email)
filtered_passwords.append(user.password)
# print(filtered_emails, filtered_passwords)
with open("users.txt", "w") as f:
for i, email in enumerate(filtered_emails):
#print(email, password)
print(email, filtered_passwords[i], file=f)
但是直接写入文件会更简单:
filtered_users = []
all_users = Users.query.all()
filtered_users = all_users.copy()
# print(filtered_users)
with open("users.txt", "w") as f:
for user in filtered_users:
print(user.email, user.password, file=f)
我已经从数据库中制作了两个列表。一个电子邮件列表和另一个密码列表。我正在尝试使用将列表写入文件。使用以下代码,但只有列表的最后一项被写入文件
from app import db
from app import Users
filtered_users = []
all_users = Users.query.all()
filtered_users = all_users.copy()
# print(filtered_users)
for user in filtered_users:
`filtered_emails = []`
`filtered_passwords = []`
`filtered_emails.append(user.email)`
`filtered_passwords.append(user.password)`
`# print(filtered_emails, filtered_passwords)`
with open("users.txt", "w") as f:
`for email in filtered_emails:`
`for password in filtered_passwords:`
`#print(email, password)`
`print(email, password, file=f)`
你可以试试用'a'代替'w',因为'w'的方式会删除所有信息,从第一行开始写。
filtered_emails = ['xx@xx.com','yyy@yy.com','zzz@zz.com']
filtered_passwords = ['1','2','345']
with open("users.txt", "w") as f:
for item in zip(filtered_emails,filtered_passwords):
f.write(item[0]+' ')
f.write(item[1]+'\n')
假设所有条目都是字符串。zip
返回一个 tuple
的用户名并且 passwords.you 可以使用 itertools.izip_longest
如果你想处理长度不等的列表
输出:
xx@xx.com 1
yyy@yy.com 2
zzz@zz.com 345
您的循环会在每次迭代时重置 filtered_emails
和 filtered_passwords
。你至少应该删除它。在编写时,您使用嵌套循环(每个电子邮件对应每个密码),同时电子邮件和密码应该绑定。
你应该这样做:
filtered_users = []
all_users = Users.query.all()
filtered_users = all_users.copy()
# print(filtered_users)
for user in filtered_users:
filtered_emails.append(user.email)
filtered_passwords.append(user.password)
# print(filtered_emails, filtered_passwords)
with open("users.txt", "w") as f:
for i, email in enumerate(filtered_emails):
#print(email, password)
print(email, filtered_passwords[i], file=f)
但是直接写入文件会更简单:
filtered_users = []
all_users = Users.query.all()
filtered_users = all_users.copy()
# print(filtered_users)
with open("users.txt", "w") as f:
for user in filtered_users:
print(user.email, user.password, file=f)