我有一些svn补丁,不幸的是它们有混合的行尾。我的Windows svn客户端(tortoise)使用CRLF行结束符存储元数据。然而,我的同事们使用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()
发布于 2018-06-30 04:33:33
replace
方法不会更新从中调用它的对象,而只是将替换的字符串作为返回值返回,因此您需要将返回值分配回变量以更新它。
更改此行:
line.replace(CRLF, LF)
至:
line = line.replace(CRLF, LF)
https://stackoverflow.com/questions/51108969
复制相似问题