python - 如何读取文件的第一行两次?

标签 python file iterator

我有一个包含很多行的大文件,我想先读取第一行,然后再次从第一行开始遍历所有行。

我首先想到的是这样的事情:

file = open("fileName", 'r')
first_line = file.readline()
DoStuff_1(first_line)

for line in file:
   DoStuff_2(line)

file.close()

但此脚本的问题是传递给 DoStuff_2 的第一行是第二行而不是第一行。我对 file 是什么类型的对象没有很好的直觉。我认为它是一个迭代器并且真的不知道如何处理它。我发现的不好的解决方案是

file = open("fileName", 'r')
first_line = file.readline()

count = 0
for line in file:
   if count == 0:
      count = 1
      DoStuff_1(first_line)
   DoStuff_2(line)

file.close()

但它非常愚蠢,并且在每次迭代时都运行 if 语句,因此计算成本有点高。

最佳答案

你可以这样做:

with open('fileName', 'r') as file:
    first_line = file.readline()
    DoStuff_1(first_line)
    DoStuff_2(first_line)

    # remaining lines
    for line in file:
        DoStuff_2(line)

请注意,我更改了您的代码以使用 with,因此 file 会自动关闭。

关于python - 如何读取文件的第一行两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31234047/

相关文章:

python - 测试某个值是否不是由迭代器产生的

ios - 使用文件内容解析 NSData

python - 使用 xlwings 在 excel 中的函数调用之间保留 python 全局变量

python - 使用 pyopenssl 验证签名

python - 在 Python 中使用分数

python - 在 Python 中不关闭打开的文件会有什么后果?

Mysql查询返回一个非常大的文件

python 3.x : Subtract Same Index from Sequential Lines

python - 如何在循环中获取当前迭代器项的索引?

python - 合并 2 个包含具有匹配 ID 的对象的列表