• Python常见问题


    1. 处理中文时出现的错误'ascii' codec can't decode byte 0xe9 in position 0: ordinal not in range(128)" 解决方法

    "UnicodeDecodeError: 'ascii' codec can't decode byte 0xe9 in position 0: ordinal not in range(128)"

    解决办法,在该python文件的前面加上如下几句,问题得到解决

    #!/usr/bin/env python

    # -*- coding:utf8 -*-

    import sys
    default_encoding = 'utf-8'
    if sys.getdefaultencoding() != default_encoding:
        reload(sys)
        sys.setdefaultencoding(default_encoding)

    2.  /usr/bin/python^M: bad interpreter: No such file

    分析:
    这是不同系统编码格式引起的:在windows系统中编辑的.sh .py文件可能有不可见字符,所以在Linux系统下执行会报以上异常信息。一般是因为windows行结尾和linux行结尾标识不同造成的。

    解决:
    1)在windows下转换: 
    利用一些编辑器如UltraEdit或EditPlus等工具先将脚本编码转换,再放到Linux中执行。转换方式如下(UltraEdit):File-->Conversions-->DOS->UNIX即可。 
    2)linux下直接替换:
    sed -i 's/^M//g'  filename (注意^M 在linux 下写法 按^M 是回车换行符,输入方法是按住CTRL+v,松开v,按m)
    3)也可在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

  • 相关阅读:
    访问修饰符的权限。
    字符编码
    3/11 作业
    3/10 作业
    作业 3/9
    流程控制之for循环
    Exception in createBlockOutputStream
    windows上传文件到 linux的hdfs
    win10 配置 hadoop-2.7.2
    hadoop 源码编译
  • 原文地址:https://www.cnblogs.com/WayneZeng/p/4422257.html
Copyright © 2020-2023  润新知