gpt4 book ai didi

Python:更新文件时保持相同的行尾字符

转载 作者:太空宇宙 更新时间:2023-11-03 15:38:03 25 4
gpt4 key购买 nike

这是我对文件进行查找/替换的代码:

def updateFiles():
fileToUpdt = tup[0]
origVal = tup[1]
newVal = tup[2]
curfiledata = None

with open(fileToUpdt, 'r') as curfile :
curfiledata = curfile.read()

curfiledata = curfiledata.replace(origVal, newVal)

with open(fileToUpdt, 'w') as curfile:
curfile.write(curfiledata)

问题是输入文件中的行有时是 CRLF,有时只是 LF,但写入命令总是返回 CRLF。当原始行是 LF 时,我希望它保留换行符而不是放入 CR 中。换句话说,换行符应始终与输入文件中的原始换行符相同,因此如果是 CRLF,则应保持 CRLF,但如果是 LF,则应保持 LF。有什么办法可以做到这一点吗?

最佳答案

首先,将b(二进制)添加到读/写模式中,以使 python 忽略这些行并将文件视为二进制文件。

with open(fileToUpdt, 'rb') as curfile :
curfiledata = curfile.read()

with open(fileToUpdt, 'wb') as curfile:
curfile.write(curfiledata)

在 python 2 中,这就足够了,但在 Python 3 中,curfiledata 的类型为 bytes,不再是 str,因为它是由二进制流,因此您必须确保 origValnewValbytes 而不是 str,例如在 str 对象上使用 encode

origVal = tup[1].encode()
newVal = tup[2].encode()

(根据数据,您可能需要使用额外的参数进行编码:例如:encode("utf-8")

关于Python:更新文件时保持相同的行尾字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42369227/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com