Python脚本通常使用哪种类型的换行符?

wwwo4jvm  于 2022-12-02  发布在  Python
关注(0)|答案(5)|浏览(159)

我的老板一直因为我的Python脚本中有Windows换行符而对我感到恼火,但我一辈子都搞不清楚这些换行符是如何给他带来麻烦的。
'\r\n'是Python脚本的正常换行符吗?还是只在IDLE for PC上发生?
PS:好的,当我在Mac上编写脚本时,它似乎有'\n',但'\r\n'会导致问题吗?
编辑:好吧......现在我完全糊涂了。当我用Python解释Windows中编写的文件时,当我把行打印到屏幕上时,它们都吐出来了。Windows版的Python解释器会翻译换行符吗?

wecizke3

wecizke31#

这与Python无关,而是与底层操作系统有关。如果在Windows上保存一个文本文件,会得到CRLF换行符,如果在Mac/Unix系统上保存,会得到LF换行符(在石器时代的Mac上,会得到CR换行符)。
使用一个允许你保留文件的换行符格式的编辑器。不,记事本不允许,但是我见过的大多数编辑器都允许。UltraEdit和EditPadPro是我知道的,我可以推荐这两个。我很确定像PyDev/Eclipse这样的IDE也可以处理这个问题,但是我还没有尝试过。

cbjzeqam

cbjzeqam2#

创建将'\r\n'替换为'\n'的Python脚本
每次你把代码给你老板的时候都要运行它。
:)

q35jwt9p

q35jwt9p3#

我遇到过同样的问题。是的,做一个简单的查找和替换应该可以解决这个问题。但是,你必须在每次共享代码时都这样做;你也许该想办法让它自动化我自己从来没这么做过。

r6vfmomb

r6vfmomb4#

这个sed单行程序将Python脚本转换为所需的行尾:

sed 's/\r\n/\n/g' <windows_script >unix_script
5tmbdcev

5tmbdcev5#

newlines\n),与回车/换行(\n\r)相反,几乎是所有地方的标准行结尾,除了专用的Windows安全区。

你真的不应该重复地手动转换行尾,这不是一件“好事”。
为了支持此功能,gitcore.autocrlf选项。当在Windows系统上启用时,带有标准换行符结尾的文件在 checkout 时将转换为CRLF,并在返回时转换回CRLF。
在Windows上运行GUI编辑器和IDE时,这似乎是一种无缝的方法来科普Windows行尾问题。您的编辑器可能希望在Windows上使用CRLF行尾,并且在使用git时会得到它们,我相信在Windows安装时默认设置为true
如果你没有使用Git,也许是时候使用它了?即使是单独工作,它也有很多价值。你可以为备份和提供替代版本而修改自己的代码。
有些用户在Windows上使用GitBash / Cygwin / Ming工具,可能会使用GitBash提供的vim,并且不喜欢CRLF行尾。这些用户可以关闭Git core.autocrlf设置(false)* 之前 * 克隆存储库以避免不适当的“校正,”并由此在编辑文件时看到正确的仅换行行结尾,即使在Windows上也是如此。当在Windows上运行时,使用其他Linux工具时,这可能也会有帮助,因为这些工具也需要换行符。
Git有三个级别的设置:“system”(可能设置在C:\Program Files\...中)、“global”(设置在您的home目录Git配置文件中,并影响您所有的repo)和“local”(设置在每个repo的.git/config文件中)。后面的级别覆盖前面的级别,如果您的组织锁定了您的C盘,这会很有帮助。
下面是一些Git命令,用于查询和更新您的设置(您也可以编辑配置文件本身):

  • git config --list --show-origin:列出您的所有设置以及设置的文件位置。设置可以重复,因此较低级别的设置将覆盖较高级别的设置。
  • git config --get core.autocrlf:从您当前拥有的设置组合中获取有效设置。
  • git config --system core.autocrlf false:在系统级别关闭所有回购的自动转换。
  • git config --global core.autocrlf false:从您的主目录配置文件中关闭所有存储库中的自动转换。

请记住,在克隆 * 之前 * 将core.autocrlf设置为您所需的值。参考此处:https://docs.github.com/en/get-started/getting-started-with-git/configuring-git-to-handle-line-endings

相关问题