码迷,mamicode.com
首页 > 编程语言 > 详细

enumerate指定行号

时间:2017-08-06 00:56:31      阅读:258      评论:0      收藏:0      [点我收藏+]

标签:不能   enumerate   log   ror   exec   elf   coding   shel   .com   

有时在对文件进行处理时会出现错误,文件比较小还好,但如果文件比较大,查找起来就比较麻烦,那要怎么获取出错

的行号呢?

这里用到了enumerate,通过enumerate来指定索引:

#!/usr/bin/env python
#coding:utf-8
#@Author:Andy
#Date: 2017/6/18


def parse_data(file_name):
	with open(file_name, ‘rt‘) as f:
		for line_no , line in enumerate(f, 1):
			fields = line.split()
			try:
				count = int(fields[0])
			except ValueError as e:
				print("line {} :parse error: {}".format(line_no, e))

if __name__ == ‘__main__‘:
	parse_data(‘parse_data.txt‘)

 

parse_data.txt文件内容如下:

技术分享

 

 当出错时,先打印行号,再输出错误信息:

 技术分享

这 里的enumerate可以通过第二个参数指定初始值,根据人的使用情况,这里指定为1:,默认情况

下为0

 

但是要注意,对于元组,在利用enumerate时,并不能自动对其进行解包,而是报错:

data = [ (1, 2), (3, 4), (5, 6), (7, 8) ]
for x, (m, n) in enumerate(data):
	print(x, (m,n))
	
0 (1, 2)
1 (3, 4)
2 (5, 6)
3 (7, 8)

 解包:报错

for x, y, z in enumerate(data):
	print(x, y, z)
	
Traceback (most recent call last):
  File "C:\Program Files\Python35\lib\site-packages\IPython\core\interactiveshell.py", line 2869, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-11-138a8a540361>", line 1, in <module>
    for x, y, z in enumerate(data):
ValueError: not enough values to unpack (expected 3, got 2)

 

enumerate指定行号

标签:不能   enumerate   log   ror   exec   elf   coding   shel   .com   

原文地址:http://www.cnblogs.com/Andy963/p/7044323.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!