当前位置: 首页 > Python编程 > Python编程实战技能 > Python编程基础入门 > python创建文件名乱码怎么解决

python创建文件名乱码怎么解决

发布时间:2020年09月27日 08:21:21 来源: 点击量:505

【摘要】文件夹和文件的名字里面含有中文字符串时出现乱码的处理:把该字符串编码转换为unicode或gbk编码的字符串来解决。代码第二行如有声明编码格

文件夹和文件的名字里面含有中文字符串时出现乱码的处理:

把该字符串编码转换为unicode或gbk编码的字符串来解决。代码第二行如有声明编码格式如utf-8,则代码里面出现中文字符串的地方就按照utf-8格式的字符串去处理;如没有编码声明,则windows系统默认为gbk编码,而linux默认为utf-8编码。

#!/usr/bin/env python
# coding:utf-8
import os
# 对变量s的值字符串 '中国' 按utf-8编码处理
s = '中国'
# 创建的文件夹为乱码,乱码原因:代码编码为utf-8的中文字符串,但windows系统默认使用gbk编码,所以会乱码,
只有它们一致才不乱码
# os.mkdir(s)
# 下面2种方法都能创建含有中文字符串的文件夹及文件
# 把s的值进行解码,由于其为utf-8编码,所以使用utf-8解码
# os.mkdir(s.decode('utf-8'))
# windows系统的文件夹和文件的名字需要为unicode或gbk编码的字符串,才可以正常显示不乱码。
# os.mkdir(s.decode('utf-8').encode('gbk'))
# f = open(s.decode('utf-8') + '.txt','w')
f = open(s.decode('utf-8').encode('gbk') + '.txt','w')
f.close()

此外,还发现一个现象,是否在使用unittest模块时,创建含有中文名字的文件夹时,是有区别的。

没有使用unittest模块时,可以直接创建含有中文的文件夹,也没出现乱码。代码如下:

#!/usr/bin/env python
# coding:utf-8
import os
import chardet
s = raw_input('请输入要创建的文件夹名字:')
# s的值为ascii字符串,即gbk字符串
print chardet.detect(s)
# 发现不在unittest模块里面,可以不用编码解码处理,直接进行创建含有中文字符串的文件夹,结果也没发现乱码。而
且文件代码声明为utf-8,也没有进行转码,真是不可思议。
os.mkdir(s)
os.chdir(s)

python学习网,免费的在线学习python平台,欢迎关注!

分享到: 编辑:wangmin

就业培训申请领取
您的姓名
您的电话
意向课程
点击领取

环球青藤

官方QQ

扫描上方二维码或点击一键加群,免费领取大礼包,加群暗号:青藤。 一键加群

绑定手机号

应《中华人民共和国网络安全法》加强实名认证机制要求,同时为更加全面的体验产品服务,烦请您绑定手机号.

预约成功

本直播为付费学员的直播课节

请您购买课程后再预约

环球青藤移动课堂APP 直播、听课。职达未来!

安卓版

下载

iPhone版

下载
环球青藤官方微信服务平台

刷题看课 APP下载

免费直播 一键购课

代报名等人工服务

课程咨询 学员服务 公众号

扫描关注微信公众号

APP

扫描下载APP

返回顶部