TypeError:'str'对象在Python中不可调用

时间:2014-04-02 16:59:29

标签: python python-2.7

我为项目目的编写了以下程序。

import glob
import os
path = "/home/madhusudan/1/*.txt"
files = glob.glob(path)

s1 = "<add>\n<doc>\n\t<field name = \"id\">"
s2 = "</field>\n"
s3 = "<field name = \"features\">"
s4 = "</doc>\n</add>"

i = 150
for file in files:
    f = open(file,"r")
    str = f.read()
    file1 = "/home/madhusudan/2/"+os.path.splitext(os.path.basename(file))[0] + ".xml"
    f1 = open(file1,"w")
    content = s1 + str(i) + s2 + s3 + f.read() + s2 + s4 
    f1.write(content)
    i = i + 1

运行此代码时出现以下错误:

Traceback (most recent call last):
  File "test.py", line 18, in <module>
    id1 = str(i)
TypeError: 'str' object is not callable

任何人都可以帮我解决这个问题吗?

3 个答案:

答案 0 :(得分:8)

您已将文件内容分配给str

str = f.read()

这掩盖了内置功能。<​​/ p>

不要使用str作为本地名称;选择其他东西。

答案 1 :(得分:3)

在以下行中,代码使用字符串对象覆盖内置函数str

str = f.read()

使用不同的名称来防止这种情况发生。


>>> str(1)
'1'
>>> str = 'string object'
>>> str(1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object is not callable

答案 2 :(得分:1)

str是处理字符串值的保留名称。 所以你可以将它用作局部变量名 选择其他东西。

str_value = f.read()