TypeError:“ str”对象无法通过input()调用

时间:2019-05-13 19:19:32

标签: python input error-handling

我有以下代码,应该询问用户2个文件名。我在第二个函数中遇到了input()的错误,但是在第一个函数中却没有,我不明白... 这是错误:

  

输出= getOutputFile()     getOutputFile中的文件“ splitRAW.py”,第22行       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()

4 个答案:

答案 0 :(得分:2)

问题是当您说input = getInputFile()时。

更具体地说:

  1. 程序进入getInputFile()函数,并且尚未分配input。这意味着Python解释器将按照您的预期使用内置的input
  2. 您返回filename,然后退出getInputFile()。现在,解释器将名称input覆盖为该字符串。
  3. getOutputFile()现在尝试使用input,但已被您的文件名字符串替换。您无法调用字符串,因此解释器会告诉您并抛出错误。

尝试将input = getInputFile()替换为其他变量,例如fileIn = getInputFile()

此外,您的getOutputFile()不返回任何内容,因此您的output变量中仅包含None

答案 1 :(得分:0)

您可能会用其他名称覆盖输入名称。

如果您需要在笔记本中重新初始化输入功能:

from builtin import input

答案 2 :(得分:-1)

Depending on what version of python you're using

Python 2:

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

或者对于Python 3:

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

答案 3 :(得分:-1)

下次仅“ 重新启动内核”时发生TypeError:'str'对象不可调用-重新启动内核,它消失了。你很好走。