我正在编写一个程序,用户输入一个文件名,然后输入文件,只打印文件的前两行和最后两行.我已经想出了如何打印前两行,我也试着打印最后两行,但遇到了一个小问题.有人能解释我做错了什么吗?

f1 = open(input("Source file name: "))

line1= f1.readline()
line2= f1.readline()
line12= f1.readline()
line13= f1.readline()
print("Output:",line1,line2,line12[-1],line13[-2], sep= "")
f1.close()

文件长度为13行,因此输出应如下所示:

output:
line 1
line 2
line 12
line 13

推荐答案

你正在读前4行.你需要通读它们,只保留最后两个.

这段代码通读了所有代码,并将最后两行保存为:

line1 = f1.readline()
line2 = f1.readline()

last1, last2 = f1.readline(), f1.readline()
while True:
    line = f1.readline()
    if not line:  # eof
        break
    last1, last2 = line, last1

print("Output:",line1,line2,last2,last1, sep= "")

例如,对于文件test.txt:

Line1
line2
Line3
line4
Line5
line6
last line, line 7

你会得到:

Output:Line1
line2
line6
last line, line 7

Python相关问答推荐

Pandas:计算中间时间条目的总时间增量

当单元测试失败时,是否有一个惯例会抛出许多类似的错误消息?

当HTTP 201响应包含 Big Data 的POST请求时,应该是什么?  

SpaCy:Regex模式在基于规则的匹配器中不起作用

为什么在不先将包作为模块导入的情况下相对导入不起作用

为什么在生成时间序列时,元组索引会超出范围?

使用美汤对维基百科表格进行网络刮擦未返回任何内容

如何导入与我试图从该目录之外运行的文件位于同一目录中的Python文件?

有理由将基于Django职业的观点个人化吗?

如何使用Pillow基于二进制掩码设置PNG的RGB值

使用Numpy进行重写For循环矢量化

在单个图形上使用Pandas DataFrame.lot()绘制比例大不相同且x轴相同的条形图和y线条

Pandas 滚动着进化的windows

JAX是否保存了JIT编译函数的jaxpr?

如何动态修改气流任务decorator 属性?

LookupError:使用Django-Configurations时未安装标签为admin&39;的应用程序

如何在连接密钥的特定条件下连接两个数据帧

在函数中找不到第一个全局变量,导致错误.第二个全局变量不会导致错误?

特定 struct 中的最大元素

如何在我的sveltekit应用程序中运行带有虚拟.venv的python脚本?