推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
jiangxinyu226
V2EX  ›  Python

python 在 linux 下写文件的问题

  •  
  •   jiangxinyu226 · Jun 3, 2015 · 4739 views
    This topic created in 4052 days ago, the information mentioned may be changed or developed.

    python脚本, 先读了一个文件,然后写到另一个文件里,结果新写入的文件的每行都有一个 ^M
    ,如何去掉啊

    15 replies    2015-06-05 02:44:34 +08:00
    Tiande
        1
    Tiande  
       Jun 3, 2015
    脚本第二行加入以下注释:
    # -*- coding: utf-8 -*-
    jiangxinyu226
        2
    jiangxinyu226  
    OP
       Jun 3, 2015
    @dtdnqsb 厉害啊。。我之前加了# coding=utf-8是不行的?
    这两个有区别吗
    CodeDrift
        3
    CodeDrift  
       Jun 3, 2015
    @dtdnqsb 同问.#coding=utf-8有什么区别。。
    TheCure
        4
    TheCure  
       Jun 3, 2015
    windows表示回车换行是\r\n
    *nix表示回车是\r
    在windwos下打开的文件应为回车的关系,所以你会看到^M
    不过我并没有在linux下遇到过这种问题,只有和windows打交道的时候才会出现这个问题,你自己google下就知道了记得有个命令dos2unix之类的,最简单的就是设置utf8编码
    weyou
        5
    weyou  
       Jun 3, 2015
    读取的文件和写入的文件都用rb打开应该可以。
    xifangczy
        6
    xifangczy  
       Jun 3, 2015
    @callofmx linux 回车不是\n么
    Tiande
        7
    Tiande  
       Jun 3, 2015
    @jiangxinyu226
    @Anybfans
    看上去意思都是指使用 utf-8 编码,但支持 "# -*- coding: utf-8 -*-" 的编辑器更多。
    也就是说,Linux 下python 调用的编辑器可能默认只支持 "# -*- coding: utf-8 -*-"

    @callofmx
    windows 是 <CR><LF>
    *nix 是 <LF>
    \r\n 是 C 语言的表示方法。
    ratazzi
        8
    ratazzi  
       Jun 3, 2015
    @jiangxinyu226 @Anybfans 一个是 vim 风格,一个是 emacs 风格,仅此而已,效果一样

    文件不一样是因为换行符的原因
    CodeDrift
        9
    CodeDrift  
       Jun 3, 2015
    @dtdnqsb
    @ratazzi
    谢谢了 。涨姿势了
    ratazzi
        10
    ratazzi  
       Jun 3, 2015
    准确的说,上面只有 emacs 风格,另外一个应该算不上 vim 风格,参考
    https://www.python.org/dev/peps/pep-0263/
    fxxkgw
        11
    fxxkgw  
       Jun 3, 2015
    dos2unix
    TheCure
        12
    TheCure  
       Jun 3, 2015   ❤️ 1
    @dtdnqsb 准确的说 windows是CRLF Linux是LF Classic Mac是CR
    另外我不知道什么是C语言的表述方法,不就是换行符吗?Pyhton Java等文本文件都是一样的
    lilydjwg
        13
    lilydjwg  
       Jun 3, 2015
    把脚本贴出来,是不是文本模式和二进制模式的问题?还有你执行和查看文件的操作系统、查看文件所使用的工具、Python 版本是 2 还是 3?

    显示成 ^M 的我只知道有一种情况:非 Windows 上的 Vim。它不支持混合换行符,而 Windows 上的文本文件经常没有最后一个换行符,所以被 Windows 上的 Vim 认为是混合换行符,而非 Windows 平台上则会被认为是 UNIX 换行符(LF)所以把所有 CR 字符都显示出来了。
    Tiande
        14
    Tiande  
       Jun 3, 2015
    @callofmx 说的也是
    jiangxinyu226
        15
    jiangxinyu226  
    OP
       Jun 5, 2015 via Android
    @ratazzi 貌似是,用的Vim打开的
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5458 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 74ms · UTC 09:10 · PVG 17:10 · LAX 02:10 · JFK 05:10
    ♥ Do have faith in what you're doing.