簡體   English   中英

通過for循環從python中的文件讀取行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM