[英]Get line number python from opened file
我寫了這個小的Python 2.7原型腳本,嘗試從格式化的輸入文件中讀取指定的行(在本示例中為第3、4、5行)。 我將稍后解析此數據並在輸入上進行操作以構建其他文件。
從sys import argv
def comparator (term, inputlist):
for i in inputlist:
if (term==i):
return True
print "fail"
return False
readthese = [3,4,5]
for filename in argv[1:]:
with open(filename) as file:
for line in file:
linenum=#some kind of way to get line number from file
if comparator(linenum, readthese):
print(line)
我修復了在腳本中發現的所有錯誤,但是目前我仍然看不到從文件中獲取行號的問題。 這與從文件對象中提取行號有些不同,因為如果我沒有記錯的話,文件不是一個對象,而是一個類。 有什么辦法可以拉輸入文件的行號嗎?
我認為我的很多困惑可能源於我對with陳述所做的工作,因此,如果有人也可以解釋我對那條線所做的確切工作,那將是很棒的。
您可以enumerate
文件對象,因為enumerate
可與任何可迭代的對象一起使用...
for line_number, line in enumerate(file):
if comparator(line_number, line):
print line
請注意,此索引從0開始-如果您希望第一行為1,只需告訴enumerate
這就是您要開始的位置:
for line_number, line in enumerate(file, 1):
...
請注意,我建議您不要使用名稱file
-在python2.x上, file
是一種類型,因此您可以有效地隱藏內置函數(盡管很少使用...)。
您還可以像這樣使用列表結構的索引本身:
with open('a_file.txt','r') as f:
lines = f.readlines()
readthese = [3,4,5]
for lineno in readthese:
print(lines[1+lineno])
由於名單lines
已經隱含包含的行號基於索引+ 1
如果文件太大而無法保存在內存中,則還可以使用:
readthese = [3,4,5]
f = open('a_file.txt','r')
for lineno in readthese:
print(f.readline(lineno+1))
f.close()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.