当行结束一致时,不一致的行结尾警告

时间:2011-09-23 17:52:25

标签: visual-studio line-endings

我在Visual Studio中打开一个自动生成的文件来检查它,Visual Studio告诉我行结尾不一致。我知道LF和CRLF之间的区别,所以我想我会尝试对生成代码进行一些小改动,以根据平台使用正确的换行符。

我告诉Visual Studio不要更改它,我关闭文件。我用Python打开它,用这段代码看看每一行。

with open(filename, 'r') as f:
    # uses %r so it prints the non-formatted string (so I can see \r and \n)
    print '\n'.join(('%r' % x for x in f.xreadlines()))

我看一下输出,每一行(除了最后一行)以'\ r \ n'结尾。最后一行没有换行符,因此它只包含文本。

我也用Emacs打开文件,它不会自动检测使用DOS模式,并在每一行显示^ M字符。

当我看到每一行使用相同的行结尾时,为什么文件的行结尾“不一致”?

1 个答案:

答案 0 :(得分:2)

(回答我自己的问题,但未来可能会帮助其他人)

行结尾并非“不一致”,但它们也无效。稍微查看一下hexdump,我在文件中找到了以下CRLF的位置。

0d 0d 0a

当文件被写出时,它必须写入\r字符两次或可能,使用文字\r\n并且写出文件的任何内容都将\n字符更改为<{1}}自动。