如果第一个文件不是最后一行,Python 从文件的开头开始


with open(args.identfile) as indetifierfile, 
 open(args.elementtxt) as elementfile:
 for identifier_line, element_line in izip(identifierfile, elementfile):
    ident_split = identifier_line.split(".")
    el_split = elementfile_line.split(".")
    print ident_split[0]
    print ident_split[1]
    print el_split[0] //print for debug, bad programming practice apparently. I know.
    print el_split[1]
    if el_split is None: //tried to use this to start from the beginning of the file and continue loop? I don't know if it's valid.
        el_split.seek(0)

所以我尝试读取和处理这两个文件。打印语句在哪里,我将放置一些代码将文件中的内容放在一起并将其输出到文件中。元素文件中的内容没有标识符文件那么多。我想每次到达文件末尾时都从元素文件的开头开始?我不确定如何解决这个问题,我尝试了.seek但这行不通。我该怎么做?继续循环和读取标识符文件,但从元素文件的开头开始。

您可以尝试使用 itertools.cycle

from itertools import izip, cycle
with open(args.identfile) as indetifierfile, 
 open(args.elementtxt) as elementfile:
 for identifier_line, element_line in izip(identifierfile, cycle(elementfile)):
    ident_split = identifier_line.split(".")
    el_split = elementfile_line.split(".")
    print ident_split[0]
    print ident_split[1]
    print el_split[0]
    print el_split[1]

我认为下面的代码会做你想要的。获取元素文件的长度。将 for 循环的每次传递添加到计数器中。一旦计数器达到元素文件的长度减去 1(因为数组从 0 开始),它将计数器重置为 0 并从元素文件的开头开始,同时仍然继续使用标识符文件。

count = 0
elementLength = len(elementfile)
for i in range(len(identifierfile)):
    ident_split = identifierfile[i].split(".")
    el_split = elementfile[count].split(".")
    print ident_split[0]
    print ident_split[1]
    print el_split[0]
    print el_split[1]
    if count < (elementLength-1):
        count = count + 1
    else:
        count = 0

最新更新