Проблема в том, что имя файла содержит символ новой строки ('\n'
).Утилита ls
заменит этот символ на знак вопроса при отображении имени файла.
Новая строка взята из этого кода:
save = input("What is the file you'd like to refer to?")
f = open((save) + ".txt", "r")
Name = (f.readline())
Money = int(f.readline())
Строка, возвращаемая f.readline
, включает новую строкув конце строки.
Самый простой способ удалить символ новой строки - использовать str.rstrip , например:
Name = f.readline().rstrip('\n')
Это также будет работать:
Name = f.readline().rstrip()
, если rstrip
не передан параметр, он удалит все завершающие пробельные символы.
Строка "Деньги" в файле не имеетзавершающий символ новой строки, но было бы разумно вызывать rstrip
независимо от него, поскольку его можно было бы добавить, если файл был отредактирован в текстовом редакторе, или если в файл было добавлено больше строк.
В оболочке bash вы можете «видеть» переводы строки, передавая выходные данные с ls
по cat
или sed
(кредит этот комментарий ):
> ls test*.txt
test?.txt
> ls test*.txt | cat
test
.txt
> ls test*.txt | sed -n l
test$
.txt$