相关文章推荐
欢快的茶叶  ·  python json.update - ...·  12 小时前    · 
霸气的胡萝卜  ·  Windows中python使用tkinte ...·  7 小时前    · 
瘦瘦的伤痕  ·  _tkinter.TclError: ...·  7 小时前    · 
不拘小节的电池  ·  Llama ...·  3 月前    · 
礼貌的机器人  ·  Python ...·  1 年前    · 

在Python中使用readlines()跳过一个文本文件的第一行

0 人关注

我是一个初级程序员,试图用python建立一个密码管理器。我一直在尝试写一个函数,允许你通过打印文本文件的内容到控制台来查看。

def view():
    with open("passwords.txt", "r") as p:
        for line in p.readlines():
            if line == p.readlines()[0]:
            data = line.rstrip()
            user, passw = data.split("|")
            print("User: ", user, "| password: ", passw)

为了说明情况,我的文本文件的第一行是一个标题,所以我想跳过第一行。我以为readlines()方法会返回文本文件中所有字符串的列表,然而,当我试图通过索引访问第一行时,我得到了一个

'IndexError: list index out of range' error.

跳过第一行或文本文件的任何一行的正确做法是什么? 谢谢你,这是我第一次在这里发帖。

3 个评论
next(p) p.readline() 放在 for 的循环之前如何?它将读取一行,然后直接扔掉它。
你可以在进入循环之前做 p.readline() 。 替换代码1会返回文件中的所有行,但当它完成时,文件被定位在文件的末端。 没有其他东西可读。 它不会倒退并重新开始。
看起来你的文件是管道分隔的?为什么不在这种情况下使用 .csv
python
list
for-loop
txt
babyloo
babyloo
发布于 2022-02-01
2 个回答
j1-lee
j1-lee
发布于 2022-02-01
0 人赞同

你可以使用 p.readline() next(readline) 来跳过一行,然后再循环浏览剩余的行。这将读取一行,然后直接扔掉它。

foo.txt :

this is the end
hold your breath
and count to ten

Code:

with open('foo.txt', 'r') as f:
    f.readline()
    for line in f:
        print(line, end='')
# hold your breath
# and count to ten
    
Ryan Yuan
Ryan Yuan
发布于 2022-02-01
0 人赞同

你可以使用readlines()[n:]来跳过前n行。

with open('passwords.txt', 'r') as p:
    lines = p.readlines()[1:]  # skipping first line