如何在 python 中迭代 readlines()
How to Iterate over readlines() in python
我正在尝试将 txt 文件中的行添加到 python 列表以进行迭代,脚本想要打印每一行并 return 一个错误。我正在使用 readlines() 函数,但是当我使用 list.remove(lines) 时,它 return 是一个错误: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() 有关。提前谢谢你。
lines
是您的 txt 中的列表。文件,并且 list.remove(lines)
语法不正确,您试图删除列表中的列表。 list
是 Python 中的函数。您可以删除 lines
中的元素,例如;
del lines[0]
del lines[1]
...
或
lines.remove("something")
逻辑是,remove()
是删除列表中的一个元素,你必须在remove()
之前写那个列表然后你必须在括号中写你想删除的东西remove()
函数。
可以这样写。它将为您节省一些时间并提高效率。
import time
def main():
with open("childrens-catechism.txt", "r") as file:
for line in file:
print line,
time.sleep(60)
根据您的要求尝试此操作,这将满足您的需要。
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)
打开文件时,我们可以将文件行转换为列表,
lines = list(open("childrens-catechism.txt", "r"))
我们现在可以从此列表中删除长度大于零的条目,如下所示,
for line in lines:
if len(line) > 0:
# do sth
lines.remove(line)
如果您尝试从文件中读取所有行,然后按顺序打印它们,然后在打印后删除它们,我会推荐这种方法:
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'
至于逐行从文件中删除行,我不太确定这是否可行或有效。
我正在尝试将 txt 文件中的行添加到 python 列表以进行迭代,脚本想要打印每一行并 return 一个错误。我正在使用 readlines() 函数,但是当我使用 list.remove(lines) 时,它 return 是一个错误: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() 有关。提前谢谢你。
lines
是您的 txt 中的列表。文件,并且 list.remove(lines)
语法不正确,您试图删除列表中的列表。 list
是 Python 中的函数。您可以删除 lines
中的元素,例如;
del lines[0]
del lines[1]
...
或
lines.remove("something")
逻辑是,remove()
是删除列表中的一个元素,你必须在remove()
之前写那个列表然后你必须在括号中写你想删除的东西remove()
函数。
可以这样写。它将为您节省一些时间并提高效率。
import time
def main():
with open("childrens-catechism.txt", "r") as file:
for line in file:
print line,
time.sleep(60)
根据您的要求尝试此操作,这将满足您的需要。
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)
打开文件时,我们可以将文件行转换为列表,
lines = list(open("childrens-catechism.txt", "r"))
我们现在可以从此列表中删除长度大于零的条目,如下所示,
for line in lines:
if len(line) > 0:
# do sth
lines.remove(line)
如果您尝试从文件中读取所有行,然后按顺序打印它们,然后在打印后删除它们,我会推荐这种方法:
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'
至于逐行从文件中删除行,我不太确定这是否可行或有效。