У меня есть 2 файла: один (range.txt) с строками, которые содержат 2 целых числа с разделителями-табуляциями и второй (values.txt) с значениями с разделителями табуляции, первый из которых является целым числом. Целые числа в range.txt представляют начальную и конечную точки для диапазона, и для каждого из этих диапазонов я хочу спросить, сколько из целых чисел в values.txt попадает в этот диапазон. В качестве отправной точки я написал этот бит кода:
RangesFile = open('ranges.txt', 'r')
ValuesFile = open('values.txt', 'r')
for Line in RangesFile:
RangesFile.next()
print Line
Line = Line.strip('\n')
RangeValues = Line.split('\t')
Start = int(RangeValues[0])
End = int(RangeValues[1])
print Start
print End
for Line in ValuesFile:
Line = Line.strip('\n')
ElementList = Line.split('\t')
SNP = int(ElementList[0])
print SNP
print 'yes' if Start <= SNP <= End else 'no'
RangesFile.close()
ValuesFile.close()
Я получаю следующий вывод для тестовых файлов с 2 диапазонами и 2 целыми числами:
1867 4663
1867
4663
1923
yes
10384150
no
15274293 15275591
15274293
15275591
17486938 17490453
Вложенная петля, кажется, не запускается после первой итерации. Что я сделал не так? (Я знаю, что мой код слишком длинный, но я стараюсь, чтобы все было просто, как абсолютный новичок.) Спасибо за вашу помощь!
второй for
цикла считывает весь ValuesFile
. после его выполнения указатель файла находится в конце файла, и из него больше нет значений.
вы должны сбросить ValuesFile
указатель на файл перед началом второй for
цикла, чтобы начать чтение ValuesFile
с начала снова.
ValuesFile.seek(0)
. см. ответы на этот вопрос для более подробной информации.