首页 新闻 会员 周边 捐助

python的read("/n"),write("\n")底层如何工作

0
[已解决问题] 解决于 2025-09-11 07:17

python的read("/n"),write("\n")底层如何工作

问题补充:

write("\n"),在windows文件中显示的看不见的换行效果,还是一个字符\n?

在Windows中用write("\n")写入文件后,文件中存储的是两个不可见的控制字符\r\n(CRLF),但在大多数文本编辑器中,你看到的是看不见的换行效果,而不是字面上的\n字符。

文本编辑器中(如Notepad++, VSCode, Sublime Text):

  • 这些编辑器很"智能",它们识别\r\n序列并将其渲染为换行效果

  • Hello
    World

    • 你看不到实际的\r\n字符

        • 在Windows记事本(Notepad)中:

          • 也能正确识别\r\n并显示为换行效果

          • 在文本模式下读取(默认)
            python
            with open("test.txt", "r") as f:  # 文本模式
                line = f.readline()           # 读取一行
                print(repr(line))             # 显示字符串的原始表示
            如果文件内容:Hello\r\nWorld(Windows格式)
            
            Python读取后:'Hello\n'(Python统一转换为\n)
            
            终端显示效果:Hello(换行效果,光标移到下一行)
            
            你不会看到:字面上的 \n 字符

             

_java_python的主页 _java_python | 小虾三级 | 园豆:984
提问于:2025-09-11 07:01
< >
分享
最佳答案
0

文本模式:你永远只需要和 \n 打交道,Python 负责和操作系统之间的转换。这使得代码可以跨平台运行。

  • 当这个字符被写入到文件时,Python 会根据你的操作系统自动进行转换。

  • 如果你在 Windows 上写,Python 会自动将内存中的 \n (LF) 转换成 \r\n (CRLF) 再写入磁盘文件。

  • 如果你在 Linux/macOS 上写,Python 会直接将 \n (LF) 写入磁盘,因为这就是系统标准

    • 无论磁盘文件中的实际换行符是 \r\n (Windows)、\n (Unix) 还是 \r (Old Mac),Python 的读取函数(如 read()readline())都会将它们统一识别为内存中的 \n 字符。

    • 所以,即使你打开一个 Windows 创建的文本文件(内容是 Hello\r\nWorld),你用 for line in f: 循环读取时,得到的 line 字符串是 "Hello\n",末尾是 \n,而不是 \r\n。Python 帮你“吃掉”了那些平台相关的字符。

    • read() - 读取所有内容
      
      read(size) - 读取指定字节数
      
      readline() - 读取一行(直到换行符)
      
      readlines() - 读取所有行返回列表
      
      
      write() 方法相比 read() 方法要简单得多
      write(string) - 写入字符串/字节
      writelines(lines) - 写入多行,不会自动添加换行符!需要自己确保每行有换行符

       

_java_python | 小虾三级 |园豆:984 | 2025-09-11 07:12
lines = [] for row in data: line = ','.join(row) # 先变字符串 line += '\n' # 再手工加换行 lines.append(line)
 
写完再 f.writelines(lines
lines = [','.join(row) + '\n' for row in data]
lines = ['{}\n'.format(','.join(row)) for row in data]
_java_python | 园豆:984 (小虾三级) | 2025-09-13 17:09
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册