[Python2.x] 保存中文的unicode编码到json文件中的方法

目的:将包含中文的文件名中的中文转换为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"]}

猜你喜欢

转载自blog.csdn.net/youngwhz1/article/details/81867127
今日推荐