не записываются данные в файл. PYTHON

   import random
   import random_username
   from random_username.generate import generate_username

   print("==================== \n  Генератор паролей \n====================\n \n")

   passes = 'abcdefghijklnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890' #База символов
   logins = {'Emma', 'Watson', 'Richard', 'Karlson'}
   number = int(input('> Количество паролей?'+ "\n "))
   length = int(input('> Длина пароля?'+ "\n "))
   TypeSave = int(input('> Выберите тип вывода \n 1 - Сохранение в текстовом документе \n 2 - Вывод в консоль '+ "\n "))
   lengthlog = '2'
   logins = generate_username(750000)

   for n in range(number):
       password =''
       login = random.choice(logins)
       for i in range(length):
           password += random.choice(passes)
   
       if TypeSave == 1:
           with open('baza.txt', 'a', encoding = 'utf-8') as logmsg:
               logmsg.write(f'{login}:{password}\n')
       elif TypeSave == 2:
           print(login, password)
       else:
           print("\n > Вы вели не существующий пункт")

Ответы (2 шт):

Автор решения: YaAlex

Ваш код кажется в целом правильным, и данные должны записываться в файл baza.txt при выборе типа сохранения равного 1. Возможно, есть проблемы с кодировкой или путем к файлу.

Проверьте следующие моменты:

  1. Убедитесь, что файл baza.txt создан в рабочем каталоге (где находится ваш скрипт). Если файл не существует, скрипт его создаст.

  2. Проверьте, есть ли у вас права на запись в текущий каталог.

  3. Удостоверьтесь, что кодировка 'utf-8' правильная для вашей системы. Если у вас проблемы с кодировкой, попробуйте использовать 'cp1251' для Windows или другую подходящую кодировку.

  4. Если у вас остаются проблемы, попробуйте добавить проверку на успешное открытие файла:

if TypeSave == 1:
    try:
        with open('baza.txt', 'a', encoding='utf-8') as logmsg:
            logmsg.write(f'{login}:{password}\n')
    except Exception as e:
        print(f"Ошибка при записи в файл: {e}")
elif TypeSave == 2:
    print(login, password)
else:
    print("\n > Вы вели несуществующий пункт")

Таким образом, вы сможете получить дополнительную информацию о возможных проблемах при записи в файл.

→ Ссылка
Автор решения: qwehopelessness

у меня с этим кодом все работает, честно, я не понимаю в чем проблема, ведь ошибки не видел

import random


print("==================== \n  Генератор паролей \n====================\n \n")

passes = 'abcdefghijklnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'  # База символов
logins = ['Emma', 'Watson', 'Richard', 'Karlson']
number = int(input('> Количество паролей?' + "\n "))
length = int(input('> Длина пароля?' + "\n "))
TypeSave = int(input('> Выберите тип вывода \n 1 - Сохранение в текстовом документе \n 2 - Вывод в консоль ' + "\n "))
lengthlog = '2'

for n in range(number):
    password = ''
    login = random.choice(logins)
    for i in range(length):
        password += random.choice(passes)

    if TypeSave == 1:
        with open('baza.txt', 'a', encoding='utf-8') as logmsg:
            logmsg.write(f'{login}:{password}\n')
    elif TypeSave == 2:
        print(login, password)
    else:
        print("\n > Вы вели не существующий пункт")

изменил с

logins = {'Emma', 'Watson', 'Richard', 'Karlson'}

на

logins = ['Emma', 'Watson', 'Richard', 'Karlson']

с записью проблем не было

→ Ссылка