python脚本, 先读了一个文件,然后写到另一个文件里,结果新写入的文件的每行都有一个 ^M
,如何去掉啊
1
Tiande 2015-06-03 14:41:54 +08:00
脚本第二行加入以下注释:
# -*- coding: utf-8 -*- |
2
jiangxinyu226 OP @dtdnqsb 厉害啊。。我之前加了# coding=utf-8是不行的?
这两个有区别吗 |
4
TheCure 2015-06-03 16:33:34 +08:00
windows表示回车换行是\r\n
*nix表示回车是\r 在windwos下打开的文件应为回车的关系,所以你会看到^M 不过我并没有在linux下遇到过这种问题,只有和windows打交道的时候才会出现这个问题,你自己google下就知道了记得有个命令dos2unix之类的,最简单的就是设置utf8编码 |
5
weyou 2015-06-03 16:39:21 +08:00
读取的文件和写入的文件都用rb打开应该可以。
|
7
Tiande 2015-06-03 17:01:14 +08:00
@jiangxinyu226
@Anybfans 看上去意思都是指使用 utf-8 编码,但支持 "# -*- coding: utf-8 -*-" 的编辑器更多。 也就是说,Linux 下python 调用的编辑器可能默认只支持 "# -*- coding: utf-8 -*-" @callofmx windows 是 <CR><LF> *nix 是 <LF> \r\n 是 C 语言的表示方法。 |
8
ratazzi 2015-06-03 17:07:02 +08:00
|
10
ratazzi 2015-06-03 17:24:42 +08:00
准确的说,上面只有 emacs 风格,另外一个应该算不上 vim 风格,参考
https://www.python.org/dev/peps/pep-0263/ |
11
fxxkgw 2015-06-03 17:30:47 +08:00
dos2unix
|
12
TheCure 2015-06-03 18:30:05 +08:00 1
@dtdnqsb 准确的说 windows是CRLF Linux是LF Classic Mac是CR
另外我不知道什么是C语言的表述方法,不就是换行符吗?Pyhton Java等文本文件都是一样的 |
13
lilydjwg 2015-06-03 18:43:51 +08:00
把脚本贴出来,是不是文本模式和二进制模式的问题?还有你执行和查看文件的操作系统、查看文件所使用的工具、Python 版本是 2 还是 3?
显示成 ^M 的我只知道有一种情况:非 Windows 上的 Vim。它不支持混合换行符,而 Windows 上的文本文件经常没有最后一个换行符,所以被 Windows 上的 Vim 认为是混合换行符,而非 Windows 平台上则会被认为是 UNIX 换行符(LF)所以把所有 CR 字符都显示出来了。 |
15
jiangxinyu226 OP @ratazzi 貌似是,用的Vim打开的
|