Search code examples
pythonlistfileio

How to write all the items of a separate lists to a single file


i have made two lists from a database. one list for emails and another for passwords. i am trying to write the lists to a file using. using the following code but only the last items of the lists are getting written to the 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)`

Solution

  • Your loop resets filtered_emails and filtered_passwords on each iteration. You should at least remove that. And at write time you use nested loops (each email against each password) while emails and passwords should be bound.

    You should do:

    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)
    

    But it would be simpler to write to the file directly:

    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)