如何在python中迭代readlines()

时间:2015-01-12 07:08:11

标签: python list readlines

我正在尝试将txt文件中的行添加到python列表中进行迭代,脚本想要打印每一行并返回错误。我使用了readlines()函数,但是当我使用list.remove(lines)时,它会返回一个错误:File "quotes.py", line 20, in main list.remove(lines) TypeError: remove() takes exactly one argument (0 given).

def main():
while True:
    try:
        text_file = open("childrens-catechism.txt", "r")
        lines = text_file.readlines()
        #    print lines
        #    print len(lines)
        if len(lines) > 0:
            print lines
            list.remove(lines)
            time.sleep(60)
        else:
            print "No more lines!"
        break
        text_file.close()

我无法看清我做错了什么。我知道它与list.remove()有关。提前谢谢。

5 个答案:

答案 0 :(得分:8)

你可以这样写。它会为您节省一些时间并提高效率。

import time
def main():
    with open("childrens-catechism.txt", "r") as file:
        for line in file:
            print line,
            time.sleep(60)

答案 1 :(得分:0)

lines是来自您的txt的列表。您尝试删除列表中的列表时,文件和list.remove(lines)的语法不正确。 list是Python中的一个函数。您可以删除lines中的元素;

del lines[0]
del lines[1]
...

lines.remove("something")

逻辑是,remove()正在删除列表中的元素,您必须在remove()之前编写该列表,之后您必须在{{{}}的paranthesis中编写要删除的内容。 1}}功能。

答案 2 :(得分:0)

根据您的要求尝试,这将满足您的需求。

import time
def main():
    with open("childrens-catechism.txt", "r") as file:
        for lines in file.readlines():
            if len(lines) > 0:
                for line in lines:
                    print line
                    lines.remove(line)
            else:
                print "No more lines to remove"
            time.sleep(60)

答案 3 :(得分:0)

在打开文件时,我们可以将文件行转换为列表

lines = list(open("childrens-catechism.txt", "r"))

从这个列表中,我们现在可以删除长度大于零的条目,如下所示,

for line in lines:
    if len(line) > 0:
            # do sth
            lines.remove(line)

答案 4 :(得分:0)

如果您尝试从文件中读取所有行,然后按顺序打印它们,然后在打印后删除它们,我会推荐这种方法:

    import time

    try:
        file = open("childrens-catechism.txt")
        lines = file.readlines()

        while len(lines) != 0:
            print lines[0],
            lines.remove(lines[0])
            time.sleep(60)
    except IOError:
        print 'No such file in directory'

这将打印第一行,然后将其删除。删除第一个值后,列表会向上移动一个,使前一行(lines[1])成为列表中的新开头lines[0]

<强>编辑:

如果您想从文件中删除该行以及从行列表中删除该行,则必须执行此操作:

    import time

    try:
        file = open("childrens-catechism.txt", 'r+')  #open the file for reading and writing
        lines = file.readlines()

        while len(lines) != 0:
            print lines[0],
            lines.remove(lines[0])
            time.sleep(60)

        file.truncate(0) #this truncates the file to 0 bytes
    except IOError:
        print 'No such file in directory'

至于从第一行的文件行中删除行,我不太确定这是否可行或有效。