如何处理尝试按文件列表打印文件名的 cp932 编码错误
How to deal with cp932 encoding error trying to print the filename by file list
我正在编写一个随机选择文件并询问用户是否执行它的脚本。我最近收到如下所示的错误,我对如何更改我的脚本来解决这个问题感到困惑。
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
来自@eryksun
将python升级到3.6.X似乎是解决这个问题最快的方法,无需更改任何脚本!
现在可以使用了!
谢谢!
我正在编写一个随机选择文件并询问用户是否执行它的脚本。我最近收到如下所示的错误,我对如何更改我的脚本来解决这个问题感到困惑。
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
来自@eryksun
将python升级到3.6.X似乎是解决这个问题最快的方法,无需更改任何脚本! 现在可以使用了!
谢谢!