代替文件

时间:2009-08-11 16:45:21

标签: python

我使用python 2.5,我喜欢替换txt文件中的某些变量,并将完整的数据写入新文件。

我写了一个程序来完成上述工作,

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)

当我执行上述操作时 *我获得了错误

'TypeError: 'function' object is unsubscriptable'

'data.txt'是一个文本文件,我已经放置了$ a1,$ a2,$ a3,$ a4,我需要将$ a1 $ a2 $ a3 $ a4替换为10.0 200.0 500.0 10.0

我的约束是我需要仅通过数组传递值,如Init = numpy.asarray [(10.0,200.0,500.0,10.0)]

请帮帮我。

由于python 2.5版本是错误吗?或程序中的任何错误

4 个答案:

答案 0 :(得分:3)

错误在于:

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

这可能意味着

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

(注意交换的大括号/ parens)。由于python在“[”之后找到了一个“asarray”(这是一个函数),它会抛出一个错误,因为你不能订阅(即做x[17]之类的函数)。 / p>

答案 1 :(得分:0)

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

这是你的问题。 numpy.asarray是一个函数,你试图将它用作列表(因此例外)。翻转括号和括号并尝试。

答案 2 :(得分:0)

该行

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

几乎可以肯定是

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

我相信这就是导致你的“'功能'对象无法取消”的错误

答案 3 :(得分:0)

来自scipy import *

import numpy

来自numpy import asarray

来自字符串导入模板

def Dat(Par):

Par = numpy.asarray(Par)

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

sTemplate = Template(打开('/ home / av / W / python / data.txt','r')。read())。safe_substitute(ParDict)

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

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

DAT(初始化)

通过这种方式,它的工作正常。