2014-09-09 4 views
-4

Я пытаюсь написать очень простую программу с использованием кортежей. Это работает по большей части, но я не могу заставить его работать, обращаясь к отдельным элементам в кортежах. Я беру данные из файла, содержащего некоторую информацию, чтобы преобразовать его в кортеж и хранить данные в другом файле.index out of range python

Он работает, если я пишу все данные или только первый кортеж, но не в любом другом случае. Ниже приведен код

filename = "in.txt" 
stock_market = [] 
for line in open(filename): 
    fields = line.split(",") 
    name = fields[0] 
    shares = int(fields[1]) 
    stock = (name,shares) 
    portfolio.append(stock) 
    f = open("output.txt","w") 
    print >>f, portfolio[1] 
    f.close() 
+6

Показать фактическую отслеживающий, или по крайней мере сказать нам, какая линия ошибка включена. Мы не можем воспроизвести его самостоятельно без образца вашего файла данных. – geoffspear

+1

Это ваш фактический код? 'stock_market' никогда не используется, а' портфолио' никогда не инициализируется. Кроме того, 'print >> f, портфолио [1]' равнозначно «записывать содержимое второго элемента« портфолио »в файл». Что происходит, когда «портфолио» имеет менее двух элементов? Помните, что список '[(a, b)]' имеет длину один. – Kevin

+1

Почему вы открываете и закрываете 'output.txt' для каждой строки ввода? (Кроме того, вы намеренно усекаете вывод каждый раз, или вы хотели открыть файл с помощью режима '' a? '? – chepner

ответ

0

Вы не можете добавить в портфель, не задавая его в первую очередь. Попробуйте что-то вроде этого:

inFilename = "in.txt" 
outFilename = "output.txt" 
with open(inFilename, 'r') as inf: 
    with open(outFilename, 'w') as outf: 
     for line in inf: 
      fields = line.split(',') 
      print >>outf, (fields[0], fields[1])