【问题标题】:Linux identifies identical .py files as differentLinux 将相同的 .py 文件识别为不同的
【发布时间】:2014-01-29 16:43:22
【问题描述】:

我正在用 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 复制过来的脚本。copy.py 是我制作的 test.py 的副本,用于演示当两个文件相同时 sdiff 的输出应该是什么.

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

【问题讨论】:

  • 行尾? Windows 使用 \n\r 而 linux 使用 \n,尽管我从来没有遇到过这个问题。顺便说一句:图像毫无用处。你不能从终端复制粘贴文本吗?

标签: python linux windows


【解决方案1】:

正如 Bakuriu 所说,这是行尾的不同。

十六进制输出中的注释:

“test.py”文件以...0a 结尾,而“orig.py”文件以...0d0a 结尾。

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

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

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

【讨论】:

    猜你喜欢
    • 2020-02-29
    • 2013-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-09
    • 2012-03-15
    • 2011-12-24
    • 2019-03-30
    相关资源
    最近更新 更多