Alex2ndr
Июнь 3, 2010 12:40:15
А вы точно уверены в том, что там именно 40401 строка? Как вы это проверяете? Может вы смотрите не тот файл, что надо?
AleksSR
Июнь 3, 2010 12:45:17
Смотрю через notepad++, там строки пронумерованы. 40401 строка потому, что те данные генерирует программа(ее не я писал, там ехе, написанный на С++): функция N(x,y) где x и y пробегают значения от 0 до 1 с шагом 0.005 (201 значение, 201*201 = 40401).
AleksSR
Июнь 3, 2010 13:31:23
Еще одно важное замечание, данные почему-то начинают считываться со 105 строки по 402 включительно, а не сначала и доконца файла .dat
Alex2ndr
Июнь 3, 2010 14:28:47
Есть у меня чувство, что какой-то кривой этот файл. Попробуйте открывать его другими редакторами и запускать ваш скрипт на другой машине(переложив туда этот файл конечно). А размер файла соответствует количеству информации в нем?
AleksSR
Июнь 3, 2010 14:31:14
Размер файла данных 1.14 мб.
igor.kaist
Июнь 3, 2010 14:37:29
Посмотрите на переводы строк в файле, везде ли они одинаковы
AleksSR
Июнь 3, 2010 14:57:26
Не совсем понял, но вроде все переносы строк одинаковые. Если не сложно посмотрите плиз
файл с данными.
Спасибо.
Alex2ndr
Июнь 3, 2010 15:10:23
Посмотрел ваш файлик. Все нормально. Более того. Набросал вот такой скрипт:
#!/usr/bin/env python
# -*- coding: cp1251 -*-
i = 0
for line in open('d:\\out.dat', 'r'):
coords = line.split()
ksi_x = float(coords[0])
ksi_y = float(coords[1])
N = float(coords[2])
print i, ksi_x
i+=1
и он нормально отработал. Вот начало и конец вывода в консоль idle:
>>>
0 0.0
1 0.005
2 0.01
3 0.015
4 0.02
5 0.025
6 0.03
7 0.035
8 0.04
9 0.045
10 0.05
11 0.055
12 0.06
13 0.065
14 0.07
15 0.075
16 0.08
17 0.085
18 0.09
19 0.095
20 0.1
….
40377 0.885
40378 0.89
40379 0.895
40380 0.9
40381 0.905
40382 0.91
40383 0.915
40384 0.92
40385 0.925
40386 0.93
40387 0.935
40388 0.94
40389 0.945
40390 0.95
40391 0.955
40392 0.96
40393 0.965
40394 0.97
40395 0.975
40396 0.98
40397 0.985
40398 0.99
40399 0.995
40400 1.0
>>>
Попробуйте повторить мой опыт.
AleksSR
Июнь 3, 2010 15:23:11
Использовал ваш код и кажется понял, проблема у меня была в отображении в консоле, у меня отображал последние 300 чисел и мой и ваш код, сейчас попробую данные сохранить в другой файл и станет все понятно, прошу тему не закрывать ибо самые главные вопросы по графику еще впереди, там нужно будет сделать одну непростую махинацию)))
AleksSR
Июнь 3, 2010 17:38:53
Совсем что-то мозг кипит с этим графиком. Дело в том, что график задаваемый данными из файла нужно еще кое-как продлить…
Подскажите плиз, как реализовать такую вещь. Пусть x и y меняются в пределах от 1 до 3, нужно составить список данных, который пройдет все точки данной сетки(y постоянный, меняется x по всему диапазону, затем след. y и для него x из всего диапазона), т.е:
1 1
2 1
3 1
1 2
2 2
3 2
1 3
2 3
3 3
i = 0
k = 0
for y in range (0 , 2001):
for x in range (0 , 2001):
ks = str(i) + " " + str(k) + "\n"
k += 0.001
file.writelines(ks)
i += 0.001
такой код не работает.
Второй день с python работаю)))