подстановка в файл - PullRequest
       6

подстановка в файл

0 голосов
/ 11 августа 2009

Я использую python 2.5, мне нравится заменять определенные переменные в текстовом файле и записывать полные данные в новый файл.

я написал программу для выполнения вышесказанного,

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 ]

3 голосов
/ 11 августа 2009

Ошибка здесь:

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

что, вероятно, должно было быть

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

(обратите внимание на замененные скобки / скобки). Поскольку python обнаружил «[» после «asarray» (что является функцией), он выдает ошибку, потому что вы не можете подписать (т.е. сделать что-то вроде x[17]) функцию.

0 голосов
/ 12 августа 2009

от импорта scipy *

импорт numpy

от numy 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 (open ('/ 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 (INIT)

Таким образом, он работает нормально.

0 голосов
/ 11 августа 2009

Линия

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

почти наверняка должно быть

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

Я полагаю, это то, что приводит к тому, что ваш объект "'function' является неподписанным".

0 голосов
/ 11 августа 2009
Init = numpy.asarray [(10.0, 200.0, 500.0, 10.0)]

Это ваша проблема. numpy.asarray - это функция, и вы пытаетесь использовать ее как список (отсюда и исключение). Переверните скобки и скобки и попробуйте это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...