我正在学习Python,现在我想在文件中打印特定的行,在这种情况下,所有行都是偶数行(假设基数为1)。
在互联网上无数的地方,我看到了据说有效的同一简单循环。例如。 this SO thread或this article。
他们都使用下面的方法
f = open('output.txt', 'r')
for line in f:
print(line)
对我来说,除了“退出代码为0的过程已完成”
在f.seek(0)
之前使用for line...
证实了我的怀疑,即指针位于文件的底部。
利用这些信息,我构建了以下
f = open('Output.txt', 'r')
startline = 1
s = (startline-1 | 1) + 1 #determine first even line nr. from specified starting line
count = 0
for a in f: count += 1
for line in range(s-1, count, 2):
f.seek(0)
print(f.readlines()[line])
这可行,但是并不能解释为什么人们 not 将指针重置为顶部似乎如此普遍。
在此之后,这将打印所有必要的行,但中间会留空行。如果我改用print(f.readlines()[line] + 'END')
,结果如下,看来空白行现在一定是换行了吗?
是的,勇敢的罗宾爵士转过身来
结束
然后英勇地退缩了
结束
勇敢地说话他的脚
结束
他击败了一个非常勇敢的撤退END
以退出代码0结束的过程
编辑: 我当前的整个代码
f = open('Output.txt')
startline = 1
s = (startline-1 | 1) + 1
count = 0
for a in f: count += 1
f.seek(0)
for line in range(s-1, count, 2):
f.seek(0)
print(f.readlines()[line], end = '')
for line in f:
print(line)
有输出
是的,勇敢的罗宾爵士转过身来
然后英勇地退缩了
勇敢地说话他的脚
他退缩得非常勇敢
流程结束,退出代码为0
答案 0 :(得分:1)
您可以在不干扰文件指针的情况下获得相同的结果:
with open('Output.txt') as f:
for i, line in enumerate(f):
if i%2 == 1:
print(line, end = '')
(由于要从1开始计数,所以要检查奇数行)