Только что начал программировать (Python), используя содержимое текстового файла (x) для удовлетворения input () == x - PullRequest
0 голосов
/ 15 ноября 2018

Используя Python, я пытаюсь сделать так, чтобы содержимое текстового файла было переменной x, и с помощью оператора if создаю простую программу паролей с помощью пользовательского ввода, который является переменной s. Тем не менее, когда я делаю пользовательский ввод 1234, который совпадает с файлом text.txt, оператор if не выполняется и выводится «Отказано в доступе». Любая помощь будет принята с благодарностью.

Here is my code:

print ('Enter Password')
s = input() #goal is to input '1234'
x = open('text.txt','r') #text.txt contains '1234'
print("you typed", s)
if s == x:
    print("Access Granted")
else:
    print("Access Denied") 

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

Вывод open, присвоенный переменной x, будет файловым объектом

Попробуйте напечатать x, вы увидите что-то вроде ниже

<_io.TextIOWrapper name='text.txt' mode='r' encoding='UTF-8'>

Для содержимого файла вы можете использовать .readline(). Он читает одну строку из файлового объекта. Тогда в конце у вас будет новая строка, чтобы позаботиться о том, чтобы .strip() выполнял работу по удалению новой строки в конце.

Следующий код работает

print ('Enter Password')
s = input() #goal is to input '1234'
x = open('text.txt', 'r').readline().rstrip() #text.txt contains '1234'
print("you typed", s)
print("file content is", x)
if s == x:
    print("Access Granted")
else:
    print("Access Denied")
0 голосов
/ 15 ноября 2018

В вашей версии x является файловым объектом.Для получения контента вам необходимо read его.Хорошо бы strip пропустить пробел

print ('Enter Password')
s = input() #goal is to input '1234'
x = open('text.txt','r').read().strip()
print("you typed", s)
if s == x:
    print("Access Granted")
else:
    print("Access Denied") 

Но теперь у вас есть открытый файл, который вы не можете закрыть (обычно Python сделает это за вас, но лучше начать делать это правильно).Обычный способ - использовать with

print ('Enter Password')
s = input() #goal is to input '1234'

with open('text.txt','r') as fin:
    x = fin.read().strip()
print("you typed", s)
if s == x:
    print("Access Granted")
else:
    print("Access Denied") 

Теперь файл автоматически закрывается в конце блока with (это называется диспетчером контекста)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...