【问题标题】:How do I code two consecutive "for loops" in python? [duplicate]如何在python中编写两个连续的“for循环”? [复制]
【发布时间】:2019-09-22 16:29:42
【问题描述】:

我是一名 Python 初学者,我在一个较小的单独文件中对我的一个较大项目进行故障排除。 我更大的项目的问题是我无法让两个 for 循环连续工作。

我有一个包含两行的 txt 文件

代码很简单:

file=open("test.txt","r")
for line in file:
    print("x")
    pass
print("hi") 
for line in file:
    print("x")

两个 for 循环是相同的 bar pass

print("hi") 的存在是为了检查第一个 for 循环是否中断(确实如此)

此代码输出:

x
x
x
hi

第一个 for 循环被打破, print 语句在它之后工作,但之后的 for 循环没有?我本来希望它输出:

x
x
x
hi
x
x
x

我该如何解决这个问题?

谢谢

【问题讨论】:

    标签: python


    【解决方案1】:

    问题在于,在您的第一个循环中,您将在循环结束时到达EOF(文件结尾),因此任何后续循环都不会读取任何内容,您可以使用readlines 来获取可以随意循环的行列表:

    with open("test.txt", "r") as f:  #  use `with` to automatically close the file after reading
        lines = f.readlines()
    
    for line in lines:
        print("x")
        #pass `unnecessary`
    print("hi") 
    for line in lines:
        print("x")
    

    或者(对于大文件),您可以使用seek 让阅读器回到文件的开头:

    file = open("test.txt", "r")
    
    for line in file:
        print("x")
    
    print("hi")
    file.seek(0)
    
    for line in file:
        print("x")
    
    file.close()
    

    【讨论】:

    • 对于大文件,将行存储在列表中根本不是一个好主意。
    • @Bhawan file.seek 会解决这个问题。
    • 这再合理不过了,干杯 MrGeek
    猜你喜欢
    • 2019-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多