如何处理cp932编码错误尝试按文件列表

时间:2017-06-30 18:27:58

标签: python windows python-3.x windows-console

我正在编写一个随机选择文件并询问用户是否执行该文件的脚本。我最近得到了如下所示的错误,我对如何更改脚本以解决此问题感到困惑。

Traceback (most recent call last):
File ".\randomplay.py", line 33, in <module>
    print(file)
UnicodeEncodeError: 'cp932' codec can't encode character '\u8138' in position 1: illegal multibyte sequence

以下代码适用于Python 2.x.但是,我需要在Python 3.x中实现此功能。任何人都可以告诉我该怎么做?我想让它像以前一样工作。

import sys
import os,io
import random
import subprocess
import msvcrt

if __name__ == '__main__':
    indir = os.path.realpath("./")
    for root, dirs, files in os.walk(indir):
        random.shuffle(files)
        #print(files)
        for file in files:
            cmd="\""+file+"\""
            print(file)
            print("OK with it?")
            c = msvcrt.getch()
            print(str(ord(c)))
            if ord(c) == 27:
                exit()
            elif ord(c) == 13:
                print("executing...")
                subprocess.Popen(cmd,shell=True)
                exit()
            else:
                print("How about this?")
                pass

1 个答案:

答案 0 :(得分:0)

来自@eryksun

通过将python升级到3.6.X似乎是最快速的方式来处理这个问题而无需更改任何脚本! 现在它有效!

谢谢!