TypeError: объект 'str' не может быть вызван с помощью input () - PullRequest
0 голосов
/ 13 мая 2019

У меня есть следующий код, который должен спрашивать пользователя 2 имени файла.Я получаю ошибку с input () во второй функции, но не в первой, я не понимаю ... Вот ошибка:

output = getOutputFile () File "splitRAW.py ", строка 22, в getOutputFile fileName = input (" \ t => ") TypeError: объект 'str' не может вызываться

# Loops until an existing file has been found
def getInputFile():
    print("Which file do you want to split ?")
    fileName = input("\t=> ")
    while 1:
        try:
            file = open(fileName, "r")
            print("Existing file, let's continue !")
            return(fileName)
        except IOError:
            print("No such existing file...")
            print("Which file do you want to split ?")
            fileName = input("\t=> ")

# Gets an output file from user
def getOutputFile():
    print("What name for the output file ?")
    fileName = input("\t=> ")

А вот мой main ():

if __name__ == "__main__":
    input = getInputFile()
    output = getOutputFile()

Ответы [ 2 ]

2 голосов
/ 13 мая 2019

Проблема в том, что вы говорите input = getInputFile().

Более конкретно:

  1. Программа входит в функцию getInputFile(), а input еще не назначено,Это означает, что интерпретатор Python будет использовать встроенный input, как вы и предполагали.
  2. Вы возвращаете filename и выходите из getInputFile().Теперь интерпретатор перезаписывает имя input на эту строку.
  3. getOutputFile() теперь пытается использовать input, но он был заменен строкой имени вашего файла.Вы не можете вызвать строку, поэтому интерпретатор сообщает вам об этом и выдает ошибку.

Попробуйте заменить input = getInputFile() другой переменной, такой как fileIn = getInputFile().

Такжеваш getOutputFile() ничего не возвращает, поэтому ваша переменная output будет содержать None.

0 голосов
/ 13 мая 2019

В зависимости от того, какую версию Python вы используете :

Python 2:

var = raw_input("Please enter something: ")
print "you entered", var

Или для Python 3:

var = input("Please enter something: ")
print("You entered: " + var)
...