Linux将相同的.py文件标识为不同

时间:2014-01-29 16:43:23

标签: python linux windows

我正在使用Python开发CGI脚本。我在我的服务器上运行了一个基本的“Hello World”脚本,它工作得很好,但是我尝试在我的Windows笔记本电脑上编写的所有内容(在Sublime文本2中)并且复制了抛出Apache 500错误,没有任何调试信息。最后,我将我的HelloWorld脚本的文本复制到了Windows,将其粘贴到.py文件中,然后将其复制回来,却发现它仍然无效。我认为它可能是一个权限错误,但这两个文件具有完全相同的权限。在nano中,它们看起来完全相同,但是一个有效,一个没有。我发现使用sdiff有一些不同的东西,它们说它们是完全不同的文件,即使所有文本都是相同的。我尝试了一个十六进制转储,发现尽管文本是相同的,但是1和0是不同的。有谁知道我是否可以在python中设置某种编码以防止Apache抛出错误?

我的终端的屏幕截图,显示并排的文件和十六进制转储。 test.py是可正常工作的linux CGI脚本。 Orig.py是我从windows复制的脚本。 copied.py是test.py的副本,我用它来演示sdiff在两个文件时应该输出的内容是完全相同的。

enter image description here

更新:检查编码,两个文件都输出 text/x-java; charset=us-ascii

1 个答案:

答案 0 :(得分:2)

正如Bakuriu所提到的那样,这是一种线路结尾的差异。

请注意十六进制输出:

'test.py'文件以...0a结尾,其中'orig.py'文件以...0d0a结尾。

0a对应换行\n,而0d对应换行符`\ r'。

如果你在Vim中打开'orig.py',你应该在行的末尾看到^M。 欢迎来到跨平台开发的乐趣和游戏(:

您可以使用dos2unix之类的程序来解决此问题。