2015-05-04 3 views
0

Вместо добавления в конец файла, я пытаюсь добавить конец конца строки CSV-файла. Я хочу сделать это, когда пользователь вводит ввод, соответствующий первому столбцу .csv.Добавление к концу определенной строки

Вот пример:

file=open("class"+classno+".csv", "r+") 
writer=csv.writer(file) 
data=csv.reader(file) 

for row in data: 
    if input == row[0]: 
     (APPEND variable TO ROW) 

file.close() 

Есть ли способ сделать это? Должен ли я переопределить и переписать файл?

+4

не тривиально. файл является линейным, и вы не можете вставлять его в середину. вам нужно переписать его, если вы хотите добавить материал в середине – njzk2

+0

на основе этого комментария, вы должны перефразировать свой вопрос ... то есть, если у вас остались вопросы –

+0

Возможный дубликат [Можно ли изменить строки в файл на месте?] (http://stackoverflow.com/questions/5453267/is-it-possible-to-modify-lines-in-a-file-in-place) –

ответ

0

Вы можете прочитать весь файл, а затем изменить то, что вам нужно изменить, и записать его обратно в файл (на самом деле он не записывается, когда он полностью перезаписывается).

Может быть, этот пример поможет:

read_data = [] 

with open('test.csv', 'r') as f: 
    for line in f: 
     read_data.append(line) 

with open('test.csv', 'w') as f: 
    for line in read_data: 
     key,value = line.split(',') 
     new_line = line 

     if key == 'b': 
      value = value.strip() + 'added\n' 
      new_line = ','.join([key,value]) 

     f.write(new_line) 

Мой test.csv файл при запуске:

key,value 
a,1 
b,2 
c,3 
d,4 

И после того, как я запускаю этот образец кода:

key,value 
a,1 
b,2added 
c,3 
d,4 

Это, вероятно, не самый лучший решение с большими файлами.