Здравствуйте, я пытаюсь заставить эту программу распечатать данные списка для коридора, введенного в вызове класса внизу. Но он выводит только самую последнюю строку в списке. Эта программа принимает файл .csv и превращается в список. Ни в коем случае не очень опытный программист на питоне.Программа только распечатывает последнюю строку списка
class csv_get(object): # class to being in the .csv file to the program
import os
os.chdir('C:\Users\U2970\Documents\ArcGIS')
gpsTrack = open('roadlog_intersection_export_02_18_2014_2.csv', 'rb')
# Figure out position of lat and long in the header
headerLine = gpsTrack.readline()
valueList = headerLine.split(",")
class data_set(object): # place columns from .csv file into a python dictionary
dict = {'DESC' : csv_get.valueList.index("TDD_DESC"),
'ROUTE_NAME' : csv_get.valueList.index("ROUTE_NAME"),
'CORRIDOR': csv_get.valueList.index("CORRIDOR"),
'ROADBED': csv_get.valueList.index("DC_RBD"),
'BEG_RP': csv_get.valueList.index("BEG_RP"),
'END_RP': csv_get.valueList.index("END_RP"),
'DESIGNATION': csv_get.valueList.index("NRLG_SYS_DESC")}
class columns_set(object): # append the dict into a list
new_list = []
for line in csv_get.gpsTrack.readlines():
segmentedLine = line.split(",")
new_list.append([segmentedLine[data_set.dict['DESC']],\
'{:>7}'.format(segmentedLine[data_set.dict['ROUTE_NAME']]),\
'{:>7}'.format(segmentedLine[data_set.dict['CORRIDOR']]),\
'{:>7}'.format(segmentedLine[data_set.dict['ROADBED']]),\
'{:>7}'.format(segmentedLine[data_set.dict['BEG_RP']]),\
'{:>7}'.format(segmentedLine[data_set.dict['END_RP']]),\
'{:>7}'.format(segmentedLine[data_set.dict['DESIGNATION']])])
class data:
def __init__(self,corridor):
for col in columns_set.new_list: # for each column in the list new_list
self.desc = col[0]
self.route = col[1] # assigns column names to column numbers
self.corridor = col[2]
self.roadbed = col[3]
self.beg_rp = col[4]
self.end_rp = col[5]
self.designation = col[6]
def displayData(self): # print data for corridor number entered
print self.desc,\
self.route,\
self.corridor,\
self.roadbed,\
self.beg_rp,\
self.end_rp,\
self.designation
set1 = data('C000021') # corridor number to be sent into data class
# should print all the corridor data but only prints very last record
set1.displayData()
Хорошо спасибо за ответ Майк. Так что я бы изменил для цикла в инициализации класса данных? –
Huh. хорошо, я определенно открыт для предложений относительно того, как я могу стать лучше в программировании (а не в самой программе). Мне нравится использовать классы таким образом, чтобы я мог легко вызвать их для данных или varaiables, которые они хранят. Но да, они работают как функции. Я сам преподаю на python, поэтому я уверен, что у меня много зависаний. Спасибо, что посмотри, что ты сказал. –
ОК, поэтому я понял свою проблему, и я превратил эти классы, которые являются в основном функциями, в методы в рамках одного класса. Программа хорошо работает, поэтому большое спасибо за помощь. Теперь мне просто нужно выяснить, как сделать больше. –