我正在尝试运行下面的简单代码:
from sys import argv
script, filename = argv
print ("erase %r") % filename
raw_input = ("?")
target = open(filename, 'w')
print ("truncate")
target.truncate()
print ("fline")
repeat3 = raw_input ('> ')
print ("write")
target.write(repeat3)
我一直收到错误:
Traceback (most recent call last):
File "ex9.py", line 9, in <module>
repeat3 = raw_input ('> ')
TypeError: 'str' object is not callable
答案 0 :(得分:5)
当你这样做时:
raw_input = ("?")
您已将名称raw_input
分配给字符串"?"
,因此您无法再调用该函数(而是调用字符串,这不起作用)。
为您的变量使用不同的名称(虽然看起来您甚至没有使用它,因此您只需删除有问题的行)。
答案 1 :(得分:1)
您使用raw_input
屏蔽了raw_input = ("?")
功能。您正在使用user_input = raw_input("?")
正确查找repeat3
。
答案 2 :(得分:1)
>>> type(raw_input)
<type 'builtin_function_or_method'>
>>> raw_input = '?'
>>> type(raw_input)
<type 'str'>
您在代码中所做的是覆盖raw_input
实际意味着什么。而不是将其保持为获取用户输入的函数,而是将raw_input
转换为包含'?'
(字符串)的常规变量
并且字符串不可调用。
例如,如果您运行:
"?"('>')
你会得到同样的错误,因为它确实是你想要做的。