代码之家  ›  专栏  ›  技术社区  ›  sanyassh Khushboo Tahir

将chr(13)写入文件,读取时得到chr(10)

  •  1
  • sanyassh Khushboo Tahir  · 技术社区  · 7 年前

    if __name__ == '__main__':
        writen_text = chr(13)
        file = open('bug', 'w')
        file.write(writen_text)
        file.close()
        file = open('bug')
        read_text = ''.join(file.readlines())
        print([ord(c) for c in writen_text])
        print([ord(c) for c in read_text])
        assert writen_text == read_text
    

    输出是

    [13]
    [10]
    Traceback (most recent call last):
      File "/bug.py", line 10, in <module>
        assert writen_text == read_text
    AssertionError
    

    这是什么???我只想写一个文本到一个文件中,并且不做任何更改地准确地读取这个文本

    Python3.6.6,Ubuntu18.04,如果重要的话

    2 回复  |  直到 7 年前
        1
  •  3
  •   Mr. Kelsey    7 年前

    chr(10) 保持不变并通过断言测试。

    所以真正的问题是为什么 chr(13) 变为 chr(10) 是一个回车字符,而 chr(10) 是换行字符。

    您提到您正在使用Linux设备。Linux使用Unix模型,在其文件中使用换行符,而不使用回车符。因此,在编写 CR 字符转换为文件,系统将其转换为 LF 系统使用的字符。然后,您正在读取文件(带有翻译的字符),因此您的断言失败。

    Here's 一篇关于回报类型差异的好文章。

    推荐文章