导语:
本文主要介绍了关于python创建文件名乱码怎么解决的相关知识,包括文件名乱码怎么恢复,以及文件名中文乱码这些编程知识,希望对大家有参考作用。
文件夹和文件的名字里面含有中文字符串时出现乱码的处理:
将字符串编码转换为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中计算x的平方?10/03
- ♥ 类Python方法、__new__方法和__init__方法介绍12/19
- ♥ 如何找到 Python 自带的 IDE09/14
- ♥ 如何在 python3 中自定义间隔中断?01/01
- ♥ python如何存储数据09/16
- ♥ Python新手FAQ 4:误用Python作用域规则12/09
内容反馈