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