2016-06-18 76 views
-2

我試圖從文本文件打印幾行到python上,輸出它。我當前的代碼是:如何從文件中打印多行python

f = open("sample.txt", "r").readlines()[2 ,3] 
print(f) 

但是我得到的錯誤消息:

類型錯誤:列表索引必須是整數,而不是元組

有反正這個固定或打印多行從一個文件中單獨打印出來?

+0

你不能同時做'[2,3]'。 Do'f = open(「sample.txt」,'r')。readlines(); print(f [2],f [3])' –

+0

如果你想要列表元素2和3,你可以執行'... [2:4]'。 – khelwood

+0

@JayPatel我該怎麼做? –

回答

0

您正嘗試將一個元組傳遞給[...]預訂操作; 2 ,3是兩個元素的元組:

>>> 2 ,3 
(2, 3) 

您有幾種選擇在這裏:

  • 使用切片取子列表從所有行。從3號線[2:4]片,包括4號線:

    f = open("sample.txt", "r").readlines()[2:4] 
    
  • 商店的線條和打印特定的指數,一個接一個:

    f = open("sample.txt", "r").readlines() 
    print f[2].rstrip() 
    print f[3].rstrip() 
    

    我以前str.rstrip()刪除這仍然一部分的換行符打印前的行。

  • 使用itertools.islice()並將該文件對象用作迭代;這是最有效的方法,因爲沒有線需要被存儲在內存中的不僅僅是印刷工作更多:

    from itertools import islice 
    
    with open("sample.txt", "r") as f: 
        for line in islice(f, 2, 4): 
         print line.rstrip() 
    

    我還使用了文件對象的上下文管理器,以確保它是正確再次關閉一旦with塊完成。

+0

這是隻打印一次如果要使用這個大文件 –

+0

@MansurAli:不是確定你在問什麼。 'islice()'非常適合大文件。 –

0

將整行的列表分配給一個變量,然後分別打印第2行和第3行。

with open("sample.txt", "r") as fin: 
    lines = fin.readlines() 
print(lines[2]) 
print(lines[3]) 
+0

這是exaclty我想盡量避免,但無論如何:) :) –

+0

&不要擔心我從Jay Patel得到答案 –

相關問題