python 读取文件 next()
抱歉,我的编程水平很差,我真的是个糟糕的程序员。我参考了这个链接:如何在Python中访问文本文件的下一行。在这个问题中,next()
这个模块可以读取下一行内容。
但是,一旦代码回到for循环,它读取的就不是“下一行”,而是再下一行。
输入:
a /n
b /n
c /n
d /n
输出:
This line contains a, next line contains b.
This line contains c next line contains d.
有没有可能得到这样的结果呢
This line contains a, next line contains b
This line contains b next line contains c
编辑-抱歉,我忘了输入代码示例:
a = open('file.txt','rb')
for i in a:
b = next(a)
print "this line contains %s, next line contains %s" %(a,b)
a.close()
4 个回答
我觉得这样可以。不过你应该考虑改变输出的顺序。一般来说,你应该先输出当前行,然后再输出上一行,因为文件是按照这个顺序读取的。所以这样做可能会让人有点困惑。如果你觉得不错,可以给个赞哦 :-)
a = open('text.txt','rb')
current_line = " "
previous_line = " "
while (previous_line != ""):
# In the first step, we continue and do nothing to read the next line so
# we have both lines.
if current_line == " " and previous_line == " ":
# Get the first line.
current_line = a.readline()
continue
# Update the lines.
previous_line = current_line
current_line = a.readline()
# No output if the next line does not exist.
if current_line == "":
break
# Output.
print "This line contains " + previous_line[0] + ", next line contains " + current_line[0]
a.close()
你可以通过把所有的行读入一个字符串列表来解决你的问题。
a = open('file.txt','rb')
text_as_list = a.readlines()
for idx in range(len(text_as_list)-1):
print "this line contains %s, next line contains %s" %(text_as_list[idx], text_as_list[idx+1])
a.close()
在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。比如,有人可能会在使用某个特定的功能时,发现它并没有按照预期工作。这种情况可能会让人感到困惑,因为我们可能不知道问题出在哪里。
通常,解决这类问题的第一步是仔细检查代码,看看是否有拼写错误或者逻辑上的问题。有时候,错误可能是因为我们没有正确理解某个功能的用法,或者没有按照要求提供必要的参数。
此外,查阅相关的文档或者社区的讨论也是一个好主意。很多时候,其他人可能遇到过类似的问题,他们的解决方案可能对我们有帮助。
总之,遇到问题时,不要着急,慢慢分析,寻找解决办法,通常都能找到出路。
a = open('file.txt','rb')
prev=a.next()
for i in a:
print "this line contains %s, next line contains %s" %(prev,i)
prev=i
a.close()
你可以使用文件对象的 readlines
方法来把文件的每一行变成一个列表。
因为每一行的末尾都有一个换行符,所以如果你想把它打印在一行上,并且后面还跟着其他文字,就需要把这个换行符去掉。你可以使用字符串对象的 strip
方法,它可以去掉字符串末尾的字符。
在遍历这些行的时候,你可以通过把索引加 1
来访问列表中的下一行。
我觉得使用 with open(...) as file_name:
这种写法来创建文件对象更好,因为它会自动帮你关闭文件。
with open('file.txt', 'rb') as text_file:
lines = [line.strip() for line in text_file.readlines()]
for index, line in enumerate(lines):
# Check for last line
try:
next_line = lines[index + 1]
except IndexError:
print("this line contains %s, and is the end of file." % line)
else:
print("this line contains %s, next line contains %s" % (line, next_line))