2009-08-11 11 views
0

J'utilise python 2.5, j'aime remplacer certaines variables dans un fichier txt et écrire les données complètes dans un nouveau fichier.en remplaçant dans un fichier

i a écrit un programme pour faire ce qui précède,

from scipy import * 

import numpy 

from numpy import asarray 

from string import Template 


def Dat(Par): 


Par = numpy.asarray(Par) 

Par[0] = a1 

Par[1] = a2 

Par[2] = a3 

Par[3] = a4 

sTemplate=Template(open('/home/av/W/python/data.txt', 'r').read()).safe_substitute(Par) 

open('/home/av/W/python/data_new.txt' ,'w').write(sTemplate) 


Init = numpy.asarray [(10.0, 200.0, 500.0, 10.0)] 

Dat(Init) 

quand je l' ci-dessus exécuté * i obtenu l'erreur

'TypeError: 'function' object is unsubscriptable' 

'donnees.txt est un fichier texte, j'ai placé $ a1, $ a2, $ a3, $ a4, je dois remplacer $ a1 $ a2 $ a3 $ a4 par 10.0 200.0 500.0 10.0

Mes contraintes sont que je dois passer les valeurs uniquement par tableau comme Init = numpy .asarray [(10. 0, 200.0, 500.0, 10.0)]

aidez-moi s'il vous plaît.

est cette erreur due à la version python 2.5? ou des erreurs dans le programme

+0

Désolé pour troubler question sur Amature, i fixe l'erreur #Headers def Dat (PAR): Par numpy.asarray = (PAR) ParDict = dict (a1 = Par [0] , a2 = Par [1], a3 = Par [2], a4 = Par [3]) sTemplate = Modèle (open ('/ home/av/W/python/data.txt', 'r') .read()). safe_substitute (ParDict) ouverte ('/ home/av/W/python/data_new.txt', 'w'). écrire (sTemplate) Init = numpy.asarray [(10,0, 200,0, 500,0, 10.0)] Dat (Init) Merci pour votre temps précieux et des suggestions. –

Répondre

3

L'erreur est ici:

Init = numpy.asarray [(10.0, 200.0, 500.0, 10.0)] 

qui était probablement censé être

Init = numpy.asarray ([10.0, 200.0, 500.0, 10.0]) 

(notez les accolades/troqué parens). Puisque python a trouvé un "[" après "asarray" (qui est une fonction), il lance une erreur, car vous ne pouvez pas vous abonner (c'est-à-dire faire quelque chose comme x[17]) une fonction.

+0

Merci, j'ai essayé, mais maintenant je suis confronté à une nouvelle erreur Par [0] = a1 NameError: nom global 'a1' n'est pas défini –

+0

Eh bien, avez-vous défini a1 n'importe où? – balpha

+0

Vous avez probablement voulu dire ceci: Par [0] = "A1" (? Ou avec le signe du dollar) – balpha

0
Init = numpy.asarray [(10.0, 200.0, 500.0, 10.0)] 

Ceci est votre problème. numpy.asarray est une fonction, et vous essayez de l'utiliser comme une liste (d'où l'exception). Retournez les parenthèses et les parenthèses et essayez ceci.

+0

Merci, mais après avoir changé les crochets, il montre une erreur différente –

0

La ligne

Init = numpy.asarray [(10.0, 200.0, 500.0, 10.0)] 

devrait presque certainement

Init = numpy.asarray([(10.0, 200.0, 500.0, 10.0)]) 

Je crois que c'est la cause de votre "objet 'fonction' est unsubscriptable" erreur

0

d'importation scipy *

importation numpy

de asArray import numpy

de chaîne import Template

def Dat (Par):

Par numpy.asarray = (Par)

ParDict = dict (a1 = Par [0] , a2 = Par [1], a3 = Par [2], a4 = Par [3])

sTemplate = Modèle (open ('/ home/av/W/python/data.txt', 'r') .read()). safe_substitute (ParDict)

ouvert ('/ home/av/W/python/data_new.txt', 'w').écrire (sTemplate)

Init = numpy.asarray [(10,0, 200,0, 500,0, 10.0)]

Dat (Init)

De cette façon, ses œuvres bien.

Questions connexes