我写了这段代码
for i in range(40):
f=open('file.txt','r')
if i%2==1:
f.readlines()[i]
但它没有在控制台上打印任何东西。
然而,如果我这样写,它会: -
for i in range(40):
f=open('fil.txt','r')
if i%2==1:
p=f.readlines()[i]
print p
为什么会如此。 f.readlines()
适用于控制台,但为什么它在循环中不起作用?
答案 0 :(得分:2)
为什么第一个在控制台上打印任何内容?你不要在任何地方拨打print
。第二个调用print
,显然它会打印出来。
答案 1 :(得分:0)
在您的第一段代码中,您没有print
语句。修复它是这样的:
for i in range(40):
f=open('file.txt','r')
if i%2==1:
print(f.readlines()[i])
答案 2 :(得分:0)
您不需要每次都打开文件,并且您不需要每次都读取文件的内容(并且您在第一段代码中根本不打印):
from itertools import islice
with open('file') as fin:
for line in islice(fin, 1, 40, 2):
print line
以上代码将打印文件中的奇数行。
答案 3 :(得分:0)
f.readlines()适用于控制台
在Python解释器中,隐式打印所有值。这意味着,当您键入名称时,将自动打印其字符串表示形式:
>>> a = 'hello'
>>> a
'hello'
但是,在编写脚本时,需要使用print
:
a = 'hello'
print(a)
答案 4 :(得分:0)
您所指的控制台可能是interactive interpreter。在交互式解释器中,表达式的结果会自动显示,使其可以像计算器一样使用;它执行read-eval-print循环。运行准备好的程序时,不会假设打印步骤(技术上也没有读取步骤),因此如果您想要这样做,则必须请求它。
一个完全独立的问题是你如何阅读整个文件40次,每次只打算打印20行时将其分成行。我可能会像这样重写循环:
f=open('fil.txt','r')
for i in range(40):
p=f.readline()
if i%2==1:
print p
我不使用f.e.的原因for line in file('filename'):
是我不打算处理整个文件;将范围放在for行中可以一目了然地显示限制。