2013-10-04 2 views
-1

Я пытался написать простую вещь для управления проектами. То, что я застрял, - это функция редактирования.Python, редактирование csv, вопросы написания

def edit_assignment(): 
check() 
if os.path.exists(fdir):  
    list_assignment() 
    file = open(fdir,'r+') 
    list = file.readlines() 
    line_edit = int(raw_input('line to edit: ')) 
    list[line_edit] = 'x' 
    new_list = "\r\n".join(list) 
    file.write(new_list) 
    file.close() 
else: 
    print 'error' 

Это соответствующая часть.

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

+0

Исправить ваш отступ –

+0

Никогда не называйте переменную «список» –

+0

Что означает «смешивает два»? –

ответ

1

вы могли бы сделать что-то вроде этого:

if os.path.exists(fdir): 
    lines = open(fdir, "r").readlines() 
    line_no = int(raw_input("line: ")) 
    lines[line_no] = "x" 
    open(fdir, "w").write("".join(lines)) 
else: 
    print "error" 
0

Вы открываете файл, используя «г +» для чтения и записи. После прочтения существующего файла все дальнейшие операции записи будут выполняться в позиции указателя файла - и это конец файла. Вот почему вы получаете обнаруженное поведение.

Варианты:

  • открыть файл, прочитать строки, закройте файл, откройте файл для записи, написать строки, закройте файл

или

  • верните указатель файла в позицию 0 файла (start) с помощью fp.seek (0)
Смежные вопросы