尽管解析相同的文本文件时第一次初始化,但Forloop仍未初始化第二次

时间:2020-05-27 04:53:18

标签: python file

我试图解析一个文本文件两次,但是第二个for循环无法工作,尽管它与前一个代码相同。有人知道为什么吗?我已经盯着这段代码已经有一段时间了。所以先谢谢!

我的代码的主要基础是该代码首先在第一个for循环中检索唯一日期,然后在第二个for循环中使用唯一日期来查找每个唯一日期支付的总现金。

[注意:我已放置打印语句以用于调试。]

这里有3行,格式为'transactions.txt',每行之间用标签

25-03-2016麦当劳$ 21.30
2016年9月12日肯德基$ 59.43
2017年8月1日BurgerKing 47.56美元

输入代码

with open('transactions-output-2.txt','w') as out_file:

    with open('transactions.txt', 'r') as in_file:

        unique_dates = []

        for row in in_file:
            line = row.strip('\n').split('\t')

            date = line[0]

            if date not in date_list:
                unique_dates.append(date)


        for ref_date in unique_dates:
            print(ref_date)

            for row in in_file:
                line = row.strip('\n').split('\t')
                print(line[0])

输出代码

25-03-2016
09-12-2016
08-01-2017

1 个答案:

答案 0 :(得分:1)

每个open()只能对打开的文件进行一次迭代。这是因为in_file对象在迭代器中,当第一个for循环运行时,该对象已耗尽。

为避免这种情况,您可以在处理文件之前将其读入列表:

with open('transactions-output-2.txt','w') as out_file:

    with open('transactions.txt', 'r') as in_file:
        file_lines = in_file.readlines()
        unique_dates = []

        for row in file_lines:
            line = row.strip('\n').split('\t')

            date = line[0]

            if date not in date_list:
                unique_dates.append(date)


        for ref_date in unique_dates:
            print(ref_date)

            for row in file_lines:
                line = row.strip('\n').split('\t')
                print(line[0])