从原先的手机导出了原先的通讯录,然后导入新的手机的时候,发现总是出现的是乱码。发现里面关于文件名的部分有问题,而且默认的编码方式有问题:原先的是utf-8,改为ANSI之后,把里面关于显示通讯录名字的部分改为文件名即可(文件名即通讯录里面同学的名字)。
即把红色部分改掉即可。
python代码如下:
# encoding: utf-8?
#liuyang
#20121109
import os
import re
if __name__ == "__main__" :
curdir = "d:/lianxi"
filenames = os.listdir(curdir)
for name in filenames:
newname = name[0:len(name)-4]
file = open(curdir+'/'+name,'r+')
f_string = file.read()
match_names = re.findall("utf-8:(.+)\\n",f_string)
for match_name in match_names:
change_string1 = f_string
change_string1 = re.sub(match_name,newname,change_string1)
change_string2 = re.sub("utf-8","ANSI",change_string1)
file.seek(0)
file.truncate()
file.write(change_string2)
file.close()
非常简单的代码,但是由于基本不懂python,还是遇到了很多的问题。把这些问题记录下来,即使这些问题可能微不足道:
1 读入文件夹内的所有文件可以用os 的listdir
2 open里面的必须是字符或者字符串才可以
3 r+是读写,只有在.close之后才会写入而且是把内容追加到了后面
a+是从最后面的开始读,所以如果你直接读的话会是空的
w+是不存在的话创建,存在的话清空
4 a.seek(0) 会把之前所有的覆盖掉
truncate() 用来清空 防止seek不够长
5 python 里面迭代的东西会很好玩:
比如说可能有很多个列表(是列表吗?)
只要 for in :
就可以了,非常方便