当文件夹和文件名称包含中文字符串时,会出现乱码处理:
将字符串代码转换为unicode或gbk代码的字符串。如果代码的第二行有声明,如utf-8,则按utf-8格式的字符串处理代码中的中文字符串;如果没有代码声明,windows系统默认为gbk代码,linux默认为utf-8代码。
#!/usr/bin/envpython #coding:utf-8 importos #变量s值字符串'中国'按utf-8编码处理 s='中国' #代码编码为utf-8中文字符串,但windows系统默认使用gbk编码,因此会乱码, 只有它们是一致的,才不会乱码 #os.mkdir(s) #以下两种方法都可以创建包含中文字符串的文件夹和文件 #解码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/envpython #coding:utf-8 importos importchardet s=raw_input('请输入要创建的文件夹名称:') #s值为ascii字符串,即gbk字符串 printchardet.detect(s) #发现不在unittest模块中,无需编码解码即可直接创建含有中文字符串的文件夹,但未发现乱码。而且 而且文件代码声明是utf-8,没有转码,真的不可思议。 os.mkdir(s) os.chdir(s)
python学习网,免费在线学习python平台,欢迎关注!