[英]reading lines from file in python via for loop
我寫了這段代碼
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()
在控制台上工作,但是為什么它在循環內不起作用?
為什么第一個應該在控制台上打印任何內容? 您不會在任何地方打電話給print
。 第二個調用print
,因此顯然可以打印。
在您的第一部分代碼中,您沒有print
語句。 修復它像這樣:
for i in range(40):
f=open('file.txt','r')
if i%2==1:
print(f.readlines()[i])
您不需要每次都打開文件,也不需要每次都讀取文件的內容(並且根本不需要在第一部分代碼中打印):
from itertools import islice
with open('file') as fin:
for line in islice(fin, 1, 40, 2):
print line
上面的代碼將從文件中打印出奇數行。
f.readlines()在控制台上工作
在Python解釋器中,所有值都隱式打印。 這意味着,當您鍵入名稱時,將自動打印其字符串表示形式:
>>> a = 'hello'
>>> a
'hello'
但是,在編寫腳本時,需要使用print
:
a = 'hello'
print(a)
您所說的控制台可能是交互式解釋器 。 在交互式解釋器中,表達式的結果會自動顯示,使其像計算器一樣易於使用。 它執行read-eval-print循環。 在運行准備好的程序時,無需假定打印步驟(從技術上講,也不是讀取步驟),因此,如果您要這樣做,則必須請求它。
一個非常獨立的問題是,當您只打算打印20行時,如何讀取整個文件40次,每次將其分成幾行。 我可能會像這樣重寫循環:
f=open('fil.txt','r')
for i in range(40):
p=f.readline()
if i%2==1:
print p
我不在for line in file('filename'):
使用fe的原因是:我無意處理整個文件。 將范圍放在for行中可一眼看出限制。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.