2016-01-27 40 views
-3

我這樣做是爲了讀取文件時跳過讀取第一行從文件:如何使用的FileInput方法

import fileinput 
for line in fileinput.input('/home/manish/java.txt'): 
    if not fileinput.isfirstline(): 
...    data = proces_line(line); 
...    output(data) 

爲proces_line沒有定義它拋出錯誤。

Traceback (most recent call last): 
    File "<stdin>", line 3, in <module> 
NameError: name 'proces_line' is not defined 

我必須逐行讀取數據並存儲在列表中,每行都是列表的單獨元素。

+3

你在哪裏定義了'proces_line'? – Holloway

+0

我已經調查了這一點,並嘗試,假設proces_line是方法,但我想我錯了http://stackoverflow.com/questions/1523378/elegant-way-to-skip-first-line-when-using-python-fileinput -module – cyborg

+0

'proces_line'不是Python中的內置函數,你應該自己編寫它 – Arman

回答

2

您可以跳過第一行,如下所示:

import fileinput 

def output(line): 
    print(line) 


fi = fileinput.input('/home/manish/java.txt') 
next(fi) # skip first line 

for line in fi: 
    output(line) 

這樣您就無需每次都在測試的第一線環。


於每行的存儲到一個列表,你可以做到以下幾點:

import fileinput 

fi = fileinput.input('/home/manish/java.txt') 
next(fi) # skip first line 
output = list(fi) 
fi.close() 

print(output) 
1

你可以用這個嘗試:

fname = '/home/manish/java.txt' 
with open(fname) as f: 
    content = f.readlines() 

contentlist類型。您可以忽略content[0]並與其餘部分一起循環以獲取所需的數據。

+0

對不起,我必然會使用文件輸入法 – cyborg

+0

爲什麼?這隻有在你想要依次迭代多個文件時纔有意義,或者如果你想在閱讀它們時更改這些行,那麼這是唯一有意義的。從你的問題來看,它看起來並不像你想要做的那樣 - Sameer寫下了你如何處理你的問題。 –

+0

當然,你可以做'content = f.readlines()[1:]'並立刻砍掉第一行。 –

0

您正在尋找「的ReadLine()」機能的研究。拉動從文件的下一行,並截斷換行符Python documentation for File Input

使用

For each in openFile: 
    List += openFile.readline() 

此外,您嘗試使用不存在的功能。以及拼寫錯誤。