我正在使用一些 python 来生成一些变量名。出于某种原因,我只得到了我需要的一部分。
import sys
import csv
params = csv.reader(open('params.csv'), delimiter=',', skipinitialspace=True)
flags_r = []
flags_w = []
numbers_r = []
numbers_w = []
station = ['AC1','DC1','DC1']
drive = ['','Fld','Arm']
for i in range(3):
for p in params:
try:
desc = p[1].split(' ')
desc = [part.capitalize() for part in desc]
desc = "".join(desc)
except IndexError, e:
print 'IndexError: %s' %(e,)
continue
print station[i],drive[i],p[0]
flags_r.append( 'mod%(station)s_%(drive)sP%(param)04dr_%(desc)s' % \
{ 'station' : station[i], 'drive' : drive[i], 'param': int(p[0]), 'desc':desc })
flags_w.append( 'mod%(station)s_%(drive)sP%(param)04dw_%(desc)s' % \
{ 'station' : station[i], 'drive' : drive[i], 'param': int(p[0]), 'desc':desc })
numbers_r.append( 'mod%(station)s_%(drive)sP%(param)04drn_%(desc)s' % \
{ 'station' : station[i], 'drive' : drive[i], 'param': int(p[0]), 'desc':desc })
numbers_w.append( 'mod%(station)s_%(drive)sP%(param)04dwn_%(desc)s' % \
{ 'station' : station[i], 'drive' : drive[i], 'param': int(p[0]), 'desc':desc })
print i
参数.csv:
100, Speed Reference
101, Speed Feedback
由于某种原因,它正在输出:
AC1 100
AC1 101
0
1
2
try/except 的原因是捕获 csv 文件中的任何空白行或缺少的第二个字段。
内部循环似乎只在第一遍执行。我能看到发生这种情况的唯一原因是 try/except 因为我做了一个交互式示例来测试它。