Форум сайта python.su
0
Добрый день.
Нужен совет, есть файл с данными измерений, данные разделяются пробелами.
Первым столбцом является высота над уровнем моря.
Нужно определить прочитав файл минимальную и максимальную высоту, после чего переименовать файл в соответствии с этими значениями.
Пожалуйста, любые советы!
Офлайн
20
Какого рода советы?.. Читаем построчно файл, бьем строку на слова используя пробел в качестве разделителя. Приводим первое слово к числу. Сравниваем число с некой максимальной и минимальной высотой. Если оно больше или меньше, то меняем максимальную/минимальную. В конце переименовываем файл.
Офлайн
0
Нашел вот такое решение для поиска максимального значения, должно выдавать индекс строки с максимальным значением, но оно мне постоянно выдает 0
import csv
import operator
with open(“test.txt”,'r') as f:
reader = csv.reader(f, delimiter=' ')
reader.next()
for line in reader:
index, value = max(enumerate(line), key=operator.itemgetter(1))
print index
Вот кусок данных из файла
2390.00 -0.1061 -0.1076 -0.0500 -0.2629 -0.2811 21.4674 1.2572 0.361 2402.6376 5.6217
2390.20 0.3938 -0.1076 -0.0500 -0.2700 -0.2911 18.3698 2.6769 0.370 767.1412 10.5410
2390.40 0.9678 -0.1076 -0.0500 -0.2700 -0.3341 16.0903 3.5797 0.373 739.7272 13.7974
2390.60 1.3404 -0.1076 -0.0500 -0.2700 -0.3449 14.4943 4.2324 0.379 1919.2277 15.4347
2390.80 1.5703 1.2832 -0.0500 -0.2700 -0.3870 13.3890 4.6874 0.373 693.9707 17.2663
2391.00 1.7362 3.0073 -0.0500 -0.2700 -0.3870 12.5725 5.0362 0.367 716.1253 19.1899
2391.20 1.8512 4.1641 -0.0500 -0.2700 -0.3870 11.8513 5.2573 0.367 686.9627 20.4551
2391.40 1.9369 4.8760 -0.0500 -0.2700 -0.3905 11.3004 5.3919 0.368 726.0114 22.1677
2391.60 1.9909 5.4263 -0.0500 -0.2700 -0.4195 10.8978 5.5215 0.371 720.6960 23.9231
2391.80 2.0450 5.8580 -0.0500 -0.2700 -0.4354 10.5163 5.5775 0.372 -214.9301 24.3724
2392.00 2.1000 6.1622 1.8630 -0.2700 -0.4090 10.1711 5.6237 0.375 -27.1751 24.7760
Ну и замена max на min не выводит вообще никакого значения
Отредактировано mememe (Янв. 24, 2013 12:25:55)
Офлайн
568
# -*- coding: utf-8 -*- import csv with open('uu.txt','r') as f: reader = csv.reader(f, delimiter=' ') heights=[float(line[0]) for line in reader] print 'Max=', max(heights) print 'Min=', min(heights)
Офлайн
0
FishHook
И хотел еще узнать, как изменить вариант написанный тобой выше если в файлах будут заголовки.
Например первые 4 строчки всякая внутренняя инфа.
Отредактировано mememe (Янв. 24, 2013 17:29:59)
Офлайн
857
#!/usr/bin/env python3 # задан файл с данными измерений, данные разделяются пробелами, # первым столбцом является высота над уровнем моря; # определить минимальную и максимальную высоту, после чего # переименовать файл в соответствии с этими значениями import os ifname = 'file.txt' with open(ifname, encoding='utf-8') as fin: hmin = 1000000 hmax = -1000000 for line in fin: height = float(line.split(None, 1)[0]) if height < hmin: hmin = height if height > hmax: hmax = height newname = 'file({0}-{1}).txt'.format(hmin, hmax) os.rename(ifname, newname) print('ok')
Офлайн
0
Вот так можно с созданием нового файла к примеру:
http://gyazo.com/e6185ce04b433250fd94c7a87e49f82a - код
http://gyazo.com/936f62dd7d813a1ceba329c5353c7bac - результат
Офлайн
253
import numpy as np data=np.loadtxt("a.dat") mi,ma=np.min(data[:,0]),np.max(data[:,0]) np.savetxt("{0}_{1}.dat".format(mi,ma),data)
Офлайн
857
mememeих можно просто прочитать перед обработкой
И хотел еще узнать, как изменить вариант написанный тобой выше если в файлах будут заголовки.
Офлайн