Skip to main content
 首页 » 编程设计

python之For循环没有正确迭代

2025年05月04日10zengkefu

我编写了一个将多个文本文件合并在一起的程序,从那里开始,我尝试使用 for 循环将日期添加到第一列,因为有几个不同的日期。但是,使用这些循环,程序似乎无法正确迭代。

支持的文本文件有一个没有日期的时间列表;但是,每个文本文件都与不同的日期相关联。我将所有文本文件合并到一个文本文件中以便于使用,但为了使其有用,我尝试将日期添加到出现在文本文件第一列中的时间。

代码如下:

    import glob 
    from datetime import * 
    mon = [6, 7] 
    dayrange1 = [24, 25, 26, 27, 28, 29, 30] 
    dayrange2 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 
 
    m = 0 
    d1 = 0 
    d2 = 0 
    newline = [] 
 
 
 
    fout = open("C:\\Users\\jessica.macleod\\Desktop\\SurmontArray1.txt", "a") 
    for filename in glob.glob("C:\\Users\\jessica.macleod\\Desktop\\Surmont Noise Files\\s1-424surmontnoise2012*.txt"): 
        f = open(filename) 
        f.next() 
        f.next() 
        d1 = 0 
        d2 = 0 
        for months in mon: 
 
            if m == 0: 
 
                for days in dayrange1: 
 
                    for line in f: 
                        line += str(date(2012, mon[m], dayrange1[d1])) + " " 
                        fout.write(line) 
                    d1 = d1 + 1 
                m = m + 1 
 
 
            if m == 1: 
 
                for days in dayrange2: 
 
                    for line in f: 
                        line += str(date(2012, mon[m], dayrange2[d2])) + " " 
                        fout.write(line) 
                    d2 = d2 + 1 
 
 
 
 
        f.close() 
    fout.close() 

请您参考如下方法:

dayrange1 不会在 for months in mon 的第二个循环中迭代,因为您已将 m 设置为 1。它被跳过是因为它受到条件 if m == 0: 的保护。这意味着只有您的 glob 中第一个匹配的文件名才会有遍历 dayrange1 的结果。您需要在其中一个循环内将 m 重置为 0。

此外,您在 daterange1 中迭代了 days。在该循环的第一次迭代中,您遍历了 f 的全部内容。这意味着在 daterange1 的第二次迭代中,文件已用完。

此外,您不要在循环中使用 days。