如何在Windows机器上以Python将CRLF转换为LF

如何在Windows机器上以Python将CRLF转换为LF,第1张

如何在Windows机器上以Python将CRLF转换为LF 就地转换线尾(使用Python 3)Windows到Linux / Unix

这是一个简短的脚本,用于直接将 Windows行尾

rn
也称为
CRLF
)直接转换为 Linux / Unix行尾
n
也称为
LF
)(无需创建额外的输出文件):

# replacement stringsWINDOWS_LINE_ENDING = b'rn'UNIX_LINE_ENDING = b'n'# relative or absolute file path, e.g.:file_path = r"c:UsersUsernameDesktopfile.txt"with open(file_path, 'rb') as open_file:    content = open_file.read()content = content.replace(WINDOWS_LINE_ENDING, UNIX_LINE_ENDING)with open(file_path, 'wb') as open_file:    open_file.write(content)
Linux / Unix到Windows

只需

str.replace()
像这样在调用中交换行尾的常量即可:
content.replace(UNIX_LINE_ENDING,WINDOWS_LINE_ENDING)


代码说明
  • 重要说明:二进制模式 我们需要确保同时以二进制模式(
    mode='rb'
    mode='wb'
    打开文件两次,以使转换正常进行。

当以文本模式(

mode='r'
mode='w'
不使用
b
)打开文件时,平台的本机行尾(
rn
在Windows和
r
旧的Mac
OS版本上)将自动转换为Python的Unix风格的行尾:
n
。因此,对的调用
content.replace()
找不到
rn
要替换的任何行尾。

在二进制模式下,不会进行此类转换。因此,to的呼叫

str.replace()
可以完成其工作。

  • 二进制字符串 在Python 3中,如果没有另外声明,则字符串存储为Unipre(

    UTF-8
    )。但是我们以二进制模式打开文件-因此我们需要
    b
    在替换字符串之前添加内容,以告诉Python也将这些字符串作为二进制进行处理。

  • 原始字符串 在Windows上,路径分隔符是反斜线

    ,我们需要使用来在普通的Python字符串中进行转义
    \
    。通过
    r
    在字符串前面添加,我们创建了一个所谓的“原始字符串”,它不需要任何转义。因此,您可以将Windows资源管理器中的路径直接复制/粘贴到脚本中。

提示: 在Windows资源管理器中,按

CTRL
+
L
可以从地址栏中自动选择路径。)

  • 替代方法 我们打开文件两次,以避免需要重新定位文件指针。我们也可以用一次打开该文件,
    mode='rb+'
    但随后我们需要在读取其内容(
    open_file.seek(0)
    )之后将指针移回开始,并在写入新文件(
    open_file.truncate(0)
    )之前截断其原始内容。

只需在写入模式下再次打开文件即可自动完成。

干杯和快乐的编程,
winklerrr



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5057457.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-16
下一篇 2022-11-15

发表评论

登录后才能评论

评论列表(0条)

保存