涉及两个文件的Python嵌套循环

1 投票
1 回答
1781 浏览
提问于 2025-04-17 00:44

我有两个文件:一个叫做ranges.txt,里面每行有两个用制表符分隔的整数;另一个叫做values.txt,里面的值也是用制表符分隔,第一项是一个整数。ranges.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()

我用两个范围和两个整数的测试文件得到了以下输出:

1867    4663

1867
4663
1923
yes
10384150
no
15274293    15275591

15274293
15275591
17486938    17490453

我发现嵌套循环在第一次运行后似乎就不再执行了。我哪里出错了? (我知道我的代码写得比较长,但作为一个完全的初学者,我想尽量保持简单。) 谢谢你的帮助!

1 个回答

4

第二个 for 循环会读取整个 ValuesFile 文件。执行完这个循环后,文件指针会停在文件的最后面,这时候就没有更多的值可以读取了。

在开始第二个 for 循环之前,你应该把 ValuesFile 的文件指针重置,这样才能从头开始再次读取 ValuesFile

撰写回答