2011-09-23 69 views
1

我在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字符。

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

+0

当试图签入VS写入的文件时,我一直遇到这个错误。我通常的解决方案是在Notepad ++中打开文件,将行结束符更改为Unix并返回到DOS。 – sbi

回答

2

(回答我的问题,但也许这将帮助其他人在未来)

行尾不是“不一致”,但他们也都无效。稍微查看一下hexdump,我发现文件中CRLF应该位于以下位置。

0d 0d 0a 

当文件被写出来,它必须有书面的\r字符两次或潜在的,用文字\r\n和任何写出来的文件自动改变\n字符为\r\n

+0

+1。有没有办法改变这种散装风格? – Esteban