我正在尝试将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()有关。提前谢谢。
答案 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'
至于从第一行的文件行中删除行,我不太确定这是否可行或有效。