2013-09-12 3 views
-2

Как сохранить на каждом шаге этого цикла значения out в текстовом файле ctr_tr3.npt в той же колонке (в trib[PO4])?Как сохранить значения в текстовом файле?

N=5 
for i in xrange(N): 
    os.chdir('c:\\Users\\Hidraulica\\Desktop\\w2furnas') 
    os.system('"C:\\Users\\Hidraulica\\Desktop\\w2furnas\\w2.exe"') 
    shutil.move('tsr_1_seg6.opt', 'tsr_1_seg6.txt') 

    data = np.genfromtxt('c:\\Users\\Hidraulica\\Desktop\\w2furnas\\tsr_1_seg6.txt', skip_header=11, names=True) 
    input=np.array(data['PO4']) 

    trib =np.genfromtxt('c:\\Users\\Hidraulica\\Desktop\\w2furnas\\ctr_tr3.npt', skip_header=2, names=True) 
    out=np.array(trib['PO4']) 
    out[i]= input[i]*0.75 
+0

Было бы легче ответить, если обеспечить некоторый пример ввода и ожидаемых результатов. Правильно, неясно, что вы имеете в виду. И проблема не в простом открытом файле и записи, я прав? – zero323

+0

на каждом временном шаге Мне нужно заменить значения в столбце (PO4) в ctr_tr3.npt со значениями, находящимися в np.array, и сохранить ctr_tr3.npt –

+0

Да, но по тому, как вы читаете ctr_tr3 .npt, можно сделать вывод, что он имеет определенную структуру. Вы пропускаете некоторые строки, читаете заголовок, а затем отдельные данные, разделенные пробелами. Я могу дать вам ответ, как показано ниже, но это просто догадывается. Так что я спрашиваю, SSCCE http://www.sscce.org/ – zero323

ответ

0

Я не уверен, что я правильно понимаю, но вы не можете просто открыть файл один раз, изменить все пять значений одновременно, а затем сохранить файл?

Что-то вроде:

os.chdir('c:\\Users\\Hidraulica\\Desktop\\w2furnas') 
os.system('"C:\\Users\\Hidraulica\\Desktop\\w2furnas\\w2.exe"') 
shutil.move('tsr_1_seg6.opt', 'tsr_1_seg6.txt') 

data = np.genfromtxt('c:\\Users\\Hidraulica\\Desktop\\w2furnas\\tsr_1_seg6.txt', skip_header=11, names=True) 
trib = np.genfromtxt('c:\\Users\\Hidraulica\\Desktop\\w2furnas\\ctr_tr3.npt', skip_header=2, names=True) 

trib['P04'] = data['P04']*0.75 

with open('c:\\Users\\Hidraulica\\Desktop\\w2furnas\\ctr_tr3.npt', 'r') as f: 
    h = ''.join(f.readline() for i in range(2)) 

with open('c:\\Users\\Hidraulica\\Desktop\\w2furnas\\ctr_tr3.npt', 'w') as f: 
    # first write header from before: 
    f.write(h) 
    # names from dtype plus newline: 
    f.write(' '.join(trib.dtype.names) + '\n') 
    # then data, separated with newlines: 
    f.write('\n'.join([' '.join(map(str,i)) for i in a])) 
Смежные вопросы