Как читать файл через определённое количество строк?

Есть файл состоящий из нескольких тысяч, а то и сотен тысяч строк. В дальнейшем он выводится графиком. Чтобы сделать превьюшку, хочу выводить по оси X не каждую точку, а через, скажем через десять или сто. Вопрос: как читать не весь файл, а через определённое количество строк?


Ответы (2 шт):

Автор решения: Алексей Мешков

Как бы это нужно, чтобы оставалась каждая десятая или сотая или ещё какая строка. Сечас я делаю так:

f=open("VOLT.txt",newline='\n')
lines=f.readlines()
time_interval=[]
y1=[]
y2=[]
y3=[]
for x in lines:
    time_interval.append(x.split(' ')[0])# split(',') 
    y1.append(x.split(' ')[1])
    y2.append(x.split(' ')[2])
    y3.append(x.split(' ')[3])
f.close()
...
...
...
plt.show()

Получается очень подробный график. Но он такой не всегда нужен. Нужно бывает посмотреть общие очертания.

→ Ссылка
Автор решения: Roman Konoval

Можно сделать так:

# enumerate для каждого элемента возвращает еще и его индекс
for index, x in enumerate(lines):
    # если остаток от деления не 0, то index не кратен 10 - пропускаем
    if index % 10 != 0: 
         continue
    time_interval.append(x.split(' ')[0])# split(',') 
    y1.append(x.split(' ')[1])
    y2.append(x.split(' ')[2])
    y3.append(x.split(' ')[3])

Второй способ:

for x in lines[0::10]:
    time_interval.append(x.split(' ')[0])# split(',') 
    y1.append(x.split(' ')[1])
    y2.append(x.split(' ')[2])
    y3.append(x.split(' ')[3])

Тут lines[0::10] возвращает список из каждого 10-го элемента lines.

→ Ссылка