目的:将包含中文的文件名中的中文转换为unicode编码字符串保存在json文件中。
文件名: 你真好.gif
目标json文件内容格式: {"\u4F60\u771F\u597D":["4213fb4c242ed5a32e845dddc7c75770.gif"]}
# -*- coding:utf-8 -*-
# 获取文件的MD5字符串
import md5, hashlib
def getmd5(filepath):
f = open(filepath,'rb')
m2 = hashlib.md5()
m2.update(f.read())
f.close()
return m2.hexdigest()
# 扫描当前路径下的所有文件
data = {}
for f in glob.glob(path + r'\*'):
if not os.path.isdir(f):
p, fname = os.path.split(f)
name, ext = os.path.splitext(fname)
name = name.decode("gbk") # name = ''.join(name.decode("gbk")), 这两个语句的结果是等价的"\u4f60\u771f\u597d"
value = getmd5(f) # "4213fb4c242ed5a32e845dddc7c75770", 你真好.gif文件的MD5文本串
data[word] = [value + ext]
# 保存文本内容:{"\u4F60\u771F\u597D":["4213fb4c242ed5a32e845dddc7c75770.gif"]}
open(OUTPUT_FILE_PATH, mode='w').write(json.dumps(data))
实现过程中发现,下面的方法不符合输出的格式要求:
...
name, ext = os.path.splitext(fname)
stringList = []
for word in name:
stringList.append("\\u%04X" % (ord(word)))
name = ''.join(stringList)
...
以上代码在保存到json文件中的内容如下:
{"\\u4F60\\u771F\\u597D":["4213fb4c242ed5a32e845dddc7c75770.gif"]}