2014-09-27 3 views
-1

Я создал текстовый файл, который содержит в первой строке счетчика созданных пользователей и остальные строки текст содержит имя пользователя, пароль .. , например:перезапись слова в текстовом файле с питоном

2 
username Name Last_name Password 
username1 Name Last_name1 Password1 

Я использую следующие команды:

def SaveDatA(self): 
    #if self.CheckValid() == False: 
     #return 
    with open("data.txt","a") as f: 
     f.write(self.userEntry.get() + " " + self.NameEntry.get() + " " + self.LastEntry.get()+ " " + self.PasswordEntry.get() + "\n") 
     self.counter += 1 

Я хочу, чтобы обновить счетчик на первой линии

+1

Я предлагаю вам просто удалить первую строку общего числа, потому что она избыточна. – starrify

+0

Возможно, вам необходимо создать временный файл с нужным контентом, а затем os.rename() в исходное имя файла. Это атомно, даже на NFS. – user1277476

ответ

0

хотите ли вы этого?

f1_lines = open('data.txt', 'r').readlines() 

with open('data.txt','w') as f: 
     f.write(self.userEntry.get() + " " + self.NameEntry.get() + " " + self.LastEntry.get()+ " " + self.PasswordEntry.get() + "\n") 
     self.counter += 1 
     f1_lines[0]=str(self.counter)+'\n' 
     f.write(''.join(f1_lines)) 

С readlines() вы создаете список содержит все строки в файле, так что вы измените первый индекс этого списка с f1_lines[0]=str(self.counter)+'\n' затем переписать его к файлу!

+0

Я пробовал - не работал. Я просто хочу отредактировать первую строку с переменной self.counter – Gabriel

+0

Я новичок в мире программирования (включая python). плохо будьте благодарны, если вы объясните изменения. – Gabriel

+0

Я отредактировал ответ! попробуй ! я добавлю объяснение в ответ! – Kasramvd

0

После многих испытаний этого кода произведение:

with open("data.txt","a") as f: 
    f.write(self.userEntry.get() + " " + self.NameEntry.get() + " " + self.LastEntry.get()+ " " + self.PasswordEntry.get() + "\n") 
    self.counter += 1 

fileCopy = open('data.txt', 'r').readlines() 
fileCopy[0] = fileCopy[0][1:] 

with open("data.txt","w") as f: 
    f.write(str(self.counter)+" ") 
    f.write("".join(fileCopy)) 

, но, может быть, есть другой способ лучше?

Смежные вопросы