2016-12-17 6 views
1

У меня есть длинный текстовый файл, который всегда начинается с 32-символьного хэша MD5, как так:удалить первые 32 символов из первой строки в файле

f4f494da100a3577420a7ff7c32abb5707:55:40 PM | username: text

Моя цель состоит в том, чтобы лишить первые 32 символов первой строки этого файла, а затем переписать строку. Мой код (ниже) успешно захватывает строку и разбивает символы, но стирает все остальное в файле.

with open(x, 'r') as fin: 
    lines = fin.readlines() 
    lines = lines[0] 
    lines = lines[32:] 
with open(x, 'w') as fout: 
    for line in lines: 
     fout.write(line) 

Я знаю, что я могу изменить первую строку с lines[0], но я не уверен, как удалить символы таким образом (? Возможно re)

ответ

3

вы можете просто вручную прочитать первые 32 символов затем вызвать readlines прочитать остальное:

with open(x, 'r') as fin: 
    header = fin.read(32) 
    lines = fin.readlines() 
with open(x, 'w') as fout: 
    fout.writelines(lines) 
2

Использование lines[0] прекрасно - единственная проблема в том, что вы «повторно переписав lines переменные, тем самым теряя другие строки:

with open(x, 'r') as fin: 
    lines = fin.readlines() 
    lines[0] = lines[0][32:] # Strip just the first line 
with open(x, 'w') as fout: 
    for line in lines: 
     fout.write(line) 
+0

Спасибо! Это выглядит хорошо, но он все еще перезаписывает весь файл только с первой строкой. – celestialroad

+0

@celestialroad Возможно ли, что файл уже был переопределен вашим кодом, и это просто занимает одну оставшуюся и работающую с ней линию? –

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