• 技术文章 >Python技术 >Python基础教程

    python3中os.popen()使用出错怎么办?

    小妮浅浅小妮浅浅2020-11-18 18:28:01原创3861

    使用程序难免会有出错的时候,如何从大篇代码中找出错误,不仅考验能力,还要考验小伙们的耐心。辛辛苦苦敲出的代码运行不出结果,非常着急是可以理解的。那么我们在python3中使用os.popen()出错该怎么办?本篇文章小编同样以错误的操作方法为大家进行讲解,一起找寻不对的地方吧。


    在当前 desktop 目录下,有如下内容:

    desktop $ls
    client.py    server.py    中文测试
    arcpy.txt    codetest.py    test.py


    如上所示:有一个中文命名的文件 ----> 中文测试

    # -*- coding:utf-8 -*-
    # python3.5.1
     
    import os,sys
    print (sys.getdefaultencoding()) #系统默认编码
     
    dir_list  = os.listdir()
    for li in dir_list:
    print (li)


    输出如下:

    utf-8
    arcpy.txt
    client.py
    codetest.py
    server.py
    test.py
    中文测试


    可以看出默认编码为 utf-8,os.listdir()命令可以正常输出中文字符。

    在使用 os.popen()时:

    # -*- coding:utf-8 -*-
    # python3.5.1
     
    import os,sys
    print (sys.getdefaultencoding()) #系统默认编码
     
    dir_list = os.popen('ls','r').read()
    for li in dir_list:
    print (li)


    报错如下:

    utf-8
    Traceback (most recent call last):
      File "Desktop/codetest.py", line 8, in <module>
        dir_list = os.popen('ls','r').read()
      File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/encodings/ascii.py", line 26, in decode
        return codecs.ascii_decode(input, self.errors)[0]
    UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 76: ordinal not in range(128)


    解决:

    命令行执行没有问题,这个是编辑器的事。建议用subprocess


    对于这个解决方法,有的小伙伴们觉得太简单了,但是我们找寻方法的过程是困难的,学会的赶紧保存吧。更多Python学习推荐:PyThon学习网教学中心

    专题推荐:python3os
    上一篇:使用python3 os后程序无法运行怎么办? 下一篇:Python中return函数返回值的使用方法

    相关文章推荐

    • python3 os中如何裁剪文件?• 使用python3 os后程序无法运行怎么办?

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网