我想使用Python下载网站上的所有图片。我已经有了HTML文件的标题,因此我使用os.mkdir()
来创建文件夹,但标题包含中文。当树莓派(OS:Debian的)执行下面的代码,有一个例外:使用Python到mkdir的树莓派
UnicodeEncodeError: 'ascii' codec can't encode characters in position 20-38: ordinal not in range(128)
try:
os.mkdir(path)
except:
print "create folder failed"
continue
一切都很好,如果我跑我的Mac上的代码。
我GOOGLE了这个问题,并尝试下面的代码,但它不工作。
reload(sys)
sys.setdefaultencoding('utf-8')
更新:
我已经改变了我的代码了很多,阅读有关Unicode,UTF-8 .etc一些文章。但是,每次我在Raspberry Pi上运行代码时,都会崩溃。然后,我在PC上安装了Debian OS(这是我在Raspberry Pi上安装的),运行代码,一切正常。
所以这个问题实际上不是由代码引起的,而是由SSH造成的。
如果我在桌面环境中直接在Debian PC上运行代码,那没关系。如果我使用SSH从我的Mac登录到shell,然后运行代码,会出现一个异常“Unicode ....”。
我认为它是由环境变量引起的,我会揣摩明天,谢谢你们:-)
'setdefaultencoding'与'print'或'write'相当 - 尝试'os.mkdir(path.encode('utf-8'))' – furas
哇,它的工作,谢谢。但是改变代码太麻烦了。有没有办法让它像我的Mac一样工作? –
尝试'print sys.getfilesystemencoding()'看看你得到了什么。也许如果你在Debian中设置环境变量'LANG',那么你将不需要使用'encode()'。同样检查bash'echo $ LANG'。 – furas