2014-12-30 2 views
1

간단한 python 기능이 있습니다.TypeError : 'builtin_function_or_method'객체에 '__getitem__'속성이 없습니다.

def readMainTemplate(templateFile): 
    template = open(templateFile, 'r') 
    data = template.read() 
    index1 = data.index['['] #originally I passed it into data[] 
    index2 = data.index[']'] 
    template.close() 
    return data[index1:index2] 

def writeMainTemplate(template, name): 
    file = open(name, 'w') 
    file.write(template) 
    file.close() 

#runMainTemplate('main.template') 
def runMainTemplate(template): 
    code = readMainTemplate(template) 
    writeMainTemplate(code, 'main.cpp') 

그들은 기본적으로 (이 같은)

--template "main" 
[ 
     #include <iostream> 

     using namespace std; 

     int main() 
     { 
      return 0; 
     } 
] 

파일에서 템플릿의 어떤 종류를 읽은 다음 그것이 내가에서 실행

(기본적으로 main.cpp 템플릿을 생성) 파일에 쓸 가정 이 명령을 사용하는 명령 줄

python -c "from genmain import runMainTemplate; runMainTemplate('main.template')" 

이 오류

Traceback (most recent call last): 
    File "<string>", line 1, in <module> 
    File "genmain.py", line 18, in runMainTemplate 
    code = readMainTemplate(template) 
    File "genmain.py", line 6, in readMainTemplate 
    index1 = data.index['['] #originally I passed it into data[] 
TypeError: 'builtin_function_or_method' object has no attribute '__getitem__' 

나는 data = template.read()string를 반환하기로하고 문자열 [:] 슬라이스 작업을 수행 할 수 있도록해야한다고 생각했다.

왜 오류가 있습니까? ? 내가 위해 python 스크립트를 넣어해야 는 파일 시스템의 어디를 실행하는 (난 아무데도 현재 폴더에있는 파일 시스템에서 파일을 생성 할 템플릿의 경로를 제공함으로써)

: 또한

질문

답변

12

index은 메서드이며 ()이 아닌 []으로 호출해야합니다. Kasra의 예를 사용하려면 :

>>> s="aeer" 
>>> s.index('a') 
0 
+0

아, 아주 어리석은 실수, 나는 놓치다! :) – Kasramvd

관련 문제