【问题标题】:What type of line breaks does a Python script normally have?Python 脚本通常有哪些类型的换行符?
【发布时间】:2011-08-02 04:29:11
【问题描述】:

我的老板一直对我在我的 Python 脚本中出现 Windows 换行感到恼火,但我终其一生都无法弄清楚它们是如何给他造成问题的。

'\r\n' 是 Python 脚本的正常换行符吗?还是仅在 PC 上的IDLE 上发生?

PS:好的,我在 Mac 上编写脚本时似乎有 '\n',但有什么方法会导致 '\r\n' 出现问题?

编辑: 好吧......现在我完全糊涂了。当我用 Python 解释用 Windows 编写的文件时,当我将行打印到屏幕上时,它们都会吐出为 '\n'。 Windows 的 Python 解释器是否翻译换行符?

【问题讨论】:

  • 你在使用源代码管理吗???
  • 如果我有老板,为什么我不应该使用 IDLE?评论没有意义?
  • 不,没有使用任何正式的源代码控制,但我是唯一一个在编写脚本的人。
  • 我还是不明白他的意思?从技术上讲,他是一名顾问/主管,“老板”只是一个较短的词。
  • @Bec - 忽略它。这是对你的愚蠢和卑鄙的攻击,你不应该得到任何东西。

标签: python python-2.x line-breaks


【解决方案1】:

这与 Python 无关,而与底层操作系统有关。如果你在 Windows 上保存一个文本文件,你会得到 CRLF 换行符,如果你把它保存在 Mac/Unix 系统上,你会得到 LF 换行符(在石器时代的 Mac 上,CR 换行符)。

使用允许您保留文件的换行格式的编辑器。不,记事本没有,但我见过的大多数编辑器都有。 UltraEdit 和 EditPadPro 是我所知道的,我可以同时推荐这两个。我很确定像 PyDev/Eclipse 这样的 IDE 也会处理这个问题,但我还没有尝试过。

【讨论】:

  • 似乎 IDLE for PC 使用 '\r\n' 但有可能我在某些时候在写字板或类似文件中打开了文件。回家后我得做一些试验。
  • 当然 IDLE 使用\r\n如果你在 Windows 上运行它。这就是我回答的重点。保存文本文件时,您需要使用有意识地忽略其运行平台的编辑器。
  • @Bec:这里无法重现。在十六进制编辑器中查看 Python 文件(我刚刚在 IDLE 中创建),我看到 0D0A 行结尾。其他任何事情都没有任何意义。如果您在 Python 中使用open(filename, "r") 加载文本文件,所有\r\n被Python 解释器 解释为\n,但在磁盘上它们仍然有\r\n 行结尾。这就是为什么有“以二进制形式打开”选项 - open(filename, "rb") 等 - 其中行尾被单独保留。但同样,这不是 Python 特有的。
  • “底层操作系统”通常不关心,它都是关于编辑器和约定的。
【解决方案2】:

制作一个 Python 脚本,将 '\r\n' 替换为 '\n'

每次将代码交给老板时运行一次。

:)

【讨论】:

    【解决方案3】:

    我也遇到了同样的问题。是的,做一个简单的查找和替换应该可以解决这个问题。但是,每次共享代码时都必须这样做;你可能想考虑以某种方式自动化它。我自己从来没有这样做过。

    【讨论】:

      【解决方案4】:

      这个sed one-liner 会将 Python 脚本转换为具有所需的行尾:

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

      【讨论】:

        猜你喜欢
        • 2014-09-16
        • 1970-01-01
        • 2012-12-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多