Python: el objeto ‘str’ no es invocable

Tengo el siguiente código

f = open('BigTestFile','w'); str = '0123456789' for i in range(100000000): if i % 1000000 == 0: print(str(i / 1000000) + ' % done') f.write(str) f.close() 

Cuando lo ejecuto, obtengo este TypeError :

 Traceback (most recent call last): File "gen_big_file.py", line 8, in  print(str(i / 1000000) + ' % done') TypeError: 'str' object is not callable 

¿Porqué es eso? ¿Como arreglar?

Llame a la variable algo distinto de str . Es la sombra de la función incorporada.

Es porque anulaste la función str en la línea 3.

str() es una función incorporada en Python que se encarga de devolver una buena representación de cadena de un objeto.

Cambiar línea 3 desde

 str = '0123456789' 

a

 number_string = '0123456789' 

Usted sobrescribió str que normalmente es un constructor para cadenas.

Puede simplemente cambiar esta línea a "{} % done".format(i) si realmente no quiere cambiarlo.

Y si insiste en sobrescribir el str instancias de la class str con una cadena real, reemplazar el str(i) con "".__class__(i) solucionará el error.

En primer lugar, si desea acceder al elemento i th de algo, necesita usar [i] y no (i) . Y segundo, como ya se mencionó en los otros, no invalide str , la función para obtener la representación de cadena de cualquier objeto.