dos , unix 编码问题

来源:互联网 发布:光束灯金刚编程教学 编辑:程序博客网 时间:2024/06/05 07:59

今天写python代码,python总给我提示“During initialization the error unindent does not match any outer indentation level (***.py, line n) occurred in ***.py” 的问题。

我查看源代码,看不出问题,知道是dos和unix间编码的问题了,上网找到了一些解决办法。


1)在windows下转换:
利用一些编辑器如UltraEdit或EditPlus 等工具先将脚本编码转换,再放到Linux中执行。转换方式如下(UltraEdit):File-->Conversions-->DOS->UNIX即可。(Notepad++)编辑->档案格式转换->转为windows格式
2)也可在Linux中转换:
首先要确保文件有可执行权限
#sh>chmod a+x filename

然后修改文件格式
#sh>vi filename

利用如下命令查看文件格式
:set ff 或 :set fileformat

可以看到如下信息
fileformat=dos 或 fileformat=unix

利用如下命令修改文件格式
:set ff=unix 或 :set fileformat=unix

:wq (存盘退出)

最后再执行文件
#sh>./filename
然后,再看我的源代码,发现我的代码是在windows下建立的,是dos格式,但其中拷贝了一些unix格式文件的代码,怎么转也不对。
于是,我使用了windows下终极武器,记事本,这是windows下的标准,格式以它为准。用记事本打开后,找到了原因,ide中一般不会使用制表符,而是将制表符作为一连串空格处理,一般默认为4,而记事本中使用真正制表符,其宽度是8,而python的代表严格缩进,所以就会怎么改都不对了。
最后,先把要用的unix格式文件转为dos格式文件,再用记事本打开我的代码文件,把相应代码再拷贝一遍,然后把制表符全删掉,替换成4个空格,问题解决。