TypeError: builtin_function_or_method object has no attribute __getitem__

2024/10/3 2:28:34

I've got simple python functions.

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')

They basically suppose to read from file some kind of template(something like this)

--template "main"
[#include <iostream>using namespace std;int main(){return 0;}
]

and then write it to file(basically generating main.cpp template)

I run it from command line using this command

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

but I've got this error

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

I thought that data = template.read() supposed to return string and string should allow to perform operation slicing [:].

But why there is an error?

Also a question: where I should put python scripts in order to run it anywhere in filesystem?(I want to generate file anywhere in the filesystem in the current folder by providing path to the template)

Answer

The problem is that index is a method and needs to be called with () not []. To use Kasra's example:

>>> s="aeer"
>>> s.index('a')
0
https://en.xdnf.cn/q/70784.html

Related Q&A

Extract currency amount from string in Python

Im making a program that takes currency from a string and converts it in to other currencies. For example, if the string was the car cost me $13,250 I would need to get $ and 13250. I have this regex a…

Error: The elasticsearch backend requires the installation of requests. How do I fix it?

Im having a issue when I ran "python manage.py rebuild_index" in my app supported by haystack and elasticsearch.Python 2.7 Django version 1.6.2 Haystack 2.1.0 Elasticsearch 1.0Please see the …

numpy: applying argsort to an array

The argsort() function returns a matrix of indices that can be used to index the original array so that the result would match the sort() result.Is there a way to apply those indices? I have two array…

Jinja2 for word templating

I would like to use jinja2 for word templating like mentioned is this short article. The problem Im facing is as follows, if I put {{title}} in my word-file the resulting xml can look like this:<w:r…

API capture all paginated data? (python)

Im using the requests package to hit an API (greenhouse.io). The API is paginated so I need to loop through the pages to get all the data I want. Using something like:results = [] for i in range(1,326+…

How to convert latitude longitude to decimal in python?

Assuming I have the following:latitude = "20-55-70.010N" longitude = "32-11-50.000W"What is the easiest way to convert to decimal form? Is there some library?Would converting from…

No module named main, wkhtmltopdf issue

Im new in python, but all search results i found was useless for me.C:\Users\Aero>pip install wkhtmltopdf Collecting wkhtmltopdfUsing cached wkhtmltopdf-0.2.tar.gz Installing collected packages: wkh…

Is there a Python shortcut for variable checking and assignment?

Im finding myself typing the following a lot (developing for Django, if thats relevant):if testVariable then:myVariable = testVariable else:# something elseAlternatively, and more commonly (i.e. buildi…

python scipy Delaunay plotting point cloud

I have a pointlist=[p1,p2,p3...] where p1 = [x1,y1],p2=[x2,y2] ...I want to use scipy.spatial.Delaunay to do trianglation on these point clouds and then plot itHow can i do this ?The documentation for…

Pythonic way to verify parameter is a sequence but not string

I have a function that gets a list of DB tables as parameter, and returns a command string to be executed on these tables, e.g.:pg_dump( file=/tmp/dump.sql,tables=(stack, overflow),port=5434name=europe…