2016-11-08 5 views
0

Я запрограммировал небольшой генератор паролей, где вы можете сохранить пароль и его службу в файле с именем «password.txt». Каждый раз, когда я запускаю программу, файл остается пустым. Когда я удаляю файл и снова запускаю программу, файл «password.txt» создается, но все еще пуст.Почему Python не записывает файл?

import random 

letters = "1 2 3 4 5 6 7 8 9 Q W E R T Z U I O P A S D F G H J K L Y X C V B N M q w e r t z u i o p a s d f g h j k l y x c v b n m : ; , . 0".split() 

def checkNumb(string): 
    for i in string: 
     x = i.isdigit() 
     if x == True: 
      return True 

def createPassword(): 
    global letters 
    password = "" 
    i = 0 
    passLength = random.randint(7, 10) 
    while i < passLength: 
     passLetter = random.choice(letters) 
     password += passLetter 
     i += 1 
    x = checkNumb(password) 
    if x != True: 
     password = createPassword() 
    return password 

print("What is the name of the service?") 
service = input() 
password = createPassword() 
print(password, "will be your password for", service) 

file = open("password.txt","a") 
file.write(service + ": " + password) 
file.close() 

Кроме того, потому что я новичок, это было бы большим подспорьем, если кто-то мог указать несколько улучшений я могу сделать в этом коде.

РЕДАКТИРОВАТЬ: Ошибка отступов в выражении while была просто ошибкой, которую я сделал, копируя код здесь. Программа не имеет ошибок отступов. Спасибо asongtoruin, чтобы напомнить мне.

+0

не уверен, если это от копирования кода на SO, но ваши отступы горят - 'while i asongtoruin

+1

Эта программа даже не запускается. Можете ли вы проверить отступы, пожалуйста? Плохой с отступом код Python - это нонсенс. – khelwood

+2

После того, как я исправил отступ цикла while, у меня был 'password.txt' с нужным текстом в нем ... –

ответ

1

Просто небольшая ошибка отступы

import random 

letters = "1 2 3 4 5 6 7 8 9 Q W E R T Z U I O P A S D F G H J K L Y X C V B N M q w e r t z u i o p a s d f g h j k l y x c v b n m : ; , . 0".split() 

def checkNumb(string): 
    for i in string: 
     x = i.isdigit() 
     if x == True: 
      return True 

def createPassword(): 
    global letters 
    password = "" 
    i = 0 
    passLenght = random.randint(7, 10) 
    while i < passLenght: 
     passLetter = random.choice(letters) 
     password += passLetter 
     i += 1 
    x = checkNumb(password) 
    if x != True: 
     password = createPassword() 
    return password 

print("What is the name of the service?") 
service = input() 
password = createPassword() 
print(password, "will be your password for", service) 

file = open("password.txt","a") 
file.write(service + ": " + password) 
file.close() 

Это работает, посмотрите на это время вдавливания в createPassword()

Выход Содержание

python write_file.py 
What is the name of the service? 
service1 
SCawELnU7f will be your password for service1 

Файл:

service1: uj.voSK38 

Также r EFER по этой ссылке, для файла добавляющего разностного

Opening a file for append

+0

Отступ не находится в программе. Я случайно добавил его, написав его здесь в редакторе stackoverflow. Я редактировал свой пост. Извини, я виноват. – user3162541

0

Испытано код с while i < passLenght: dedented один раз и работал inteneded

Смежные вопросы