我使用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版本是错误吗?或程序中的任何错误
答案 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)
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(初始化)
通过这种方式,它的工作正常。