У меня есть некоторые SVN-патчи, которые, к сожалению, имеют смешанные окончания строк. Мой Windows SVN-клиент (черепаха) сохраняет свои метаданные с окончаниями строк CRLF. Тем не менее, мои коллеги используют Cornerstone на MacOS для применения исправлений, которым нужны метаданные для окончания LF-строк. Я не могу массово изменить все окончания строк в файле (работая над этим с управлением). Мне нужно изменить окончания строк только метаданных.
Я могу обнаружить окончания строк CRLF в моем файле исправления просто отлично, но попытка заменить их на LF не работает. Кто-нибудь может помочь? Если есть более эффективный способ сделать это, пожалуйста, дайте мне знать.
Я использую Python 2.7.15
import sys
import os
CRLF = '\r\n'
LF = '\n'
filePath = sys.argv[1]
newFilePath = filePath.replace('.patch', '-converted.patch')
newFile = open(newFilePath,'wb')
oldFile = open(filePath, 'r+b')
for idx,line in enumerate(oldFile.readlines()):
line = str(line)
if line.startswith("=====") or line.startswith("@@") or line.startswith("+++") or line.startswith("---") or line.startswith("Index:"):
if line.endswith(CRLF):
print ("detected CRLF at line " + str(idx))
line.replace(CRLF, LF)
print ("converted line ending to LF at line " + str(idx))
if line.endswith(CRLF):
print("hmm... line " + str(idx) + " still a crlf line!!!!!!!!")
newFile.writelines(line)
oldFile.close()
newFile.close()