请问为什么python写文件操作中,当往文件写入'\n'时,实际被写入的是'\r' '\n'?

netepic 2016-11-20 03:43:05
不妨试试以下语句:
with open('d:\\text.txt', 'w') as f_ob:
f_obj.write('hello,world\n')


然后用16进制编辑器就会看到文件末尾实际被写入是0D 0A,也就是CRLF。
请问那个'\r'(即0D)是操作系统自动加上的吗? linux下会不会也这样?

同理,读文件操作时也会发生类似的事:
with open('d:\\text.txt') as f_ob:
s = f_obj.read()

你会发现读取出来的字符是'hello,world\n',那么'\r'被吃掉了。
...全文
709 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
兔神保佑 2016-11-21
  • 打赏
  • 举报
回复
在Python中,\n 表示结束一行并另起一行这也是 Unix中的规范 但在Windows系统中 一行结束的标志是\r\n 而Python为了使程序可以跨平台 自动将其转化成了\n 反过来在windows下用文本模式写文件 会把\n转化为\r\n 可以考虑使用U参数
raining 2016-11-20
  • 打赏
  • 举报
回复
这是系统原因吧,Windows下就是0d 0a. 在Linux下,只是0a.

37,722

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧