На самом деле, чтобы точно ответить на вопрос, как он был написан
How do I "split" this file starting at line 7 to EOF?
, вы можете сделать
:
в случае, если файл не большой:
with open('dwn.txt','rb+') as f:
for i in xrange(6):
print f.readline()
content = f.read()
f.seek(0,0)
f.write(content)
f.truncate()
в случае, если файл очень большой
with open('dwn.txt','rb+') as ahead, open('dwn.txt','rb+') as back:
for i in xrange(6):
print ahead.readline()
x = 100000
chunk = ahead.read(x)
while chunk:
print repr(chunk)
back.write(chunk)
chunk = ahead.read(x)
back.truncate()
Функция truncate () необходима для установки запрашиваемого EOF.Без выполнения truncate () хвост файла, соответствующий смещению в 6 строк, останется.
.
Файл должен быть открыт в двоичном режиме, чтобы предотвратить возникновение проблем.
Когда Python читает '\ r \ n' , он преобразует их в '\ n' (это универсальная поддержка новой строки, включенная по умолчанию), то есть в цепочках есть только '\ n' chunk , даже если было '\ r \ n' в файле.
Если файл из Macintosh, он содержит только символы CR = ' \ r ' до обработки, но они будут изменены на '\ n' или '\ r \ n' (в зависимости от платформы) во время перезаписи на компьютере не Macintosh.
Если это файл из источника Linux, он содержит только LF = '\ n' новых строк, которые в ОС Windows будут изменены на '\ r \ n' (я не знаю, для файла Linuxобрабатывается на Macintosh).Причина в том, что ОС Windows записывает '\ r \ n' все, что ей приказано записать, '\ n' или '\ r' или '\ г \ п' .Следовательно, будет переписано больше символов, чем прочитано, и тогда смещение между указателями файла впереди и назад уменьшится и приведет к беспорядочной перезаписи.
В источниках HTML есть также различные новые строки.
Именно поэтому всегда предпочтительно открывать файлы в двоичном режиме, когда они обрабатываются таким образом.