_pickle.UnpicklingError: invalid load key, ‘\x00‘. 解决方案

问题描述

  • 编程语言:Python
  • 系统:MacOS
  • 功能实现:遍历某个文件夹下的所有pickle文件,然后对读取的文件进行处理
  • 代码片段:
import pickle
import os
for root, dirs, files in os.walk(args.input_dir):
	for f in files:
        file = pickle.load(open(os.path.join(root, f), 'rb'))
        ...
  • 报错信息:
    _pickle.UnpicklingError: invalid load key, ‘\x00’

问题原因

文件只包含空值、空格或tab类似的值,无法读取。
由于MacOS系统中默认每个文件夹都有.DS_Store文件,在使用os.walk的时候也会遍历到这个文件,导致读取为空

问题解决方法

加入对文件的判断

import pickle
import os
for root, dirs, files in os.walk(args.input_dir):
	for f in files:
		if f == ".DS_Store":
			continue
        file = pickle.load(open(os.path.join(root, f), 'rb'))
        ...

参考网址

【1】https://stackoverflow.com/questions/58889307/invalid-load-key-x00-issue-in-unplicling

你可能感兴趣的:(编程bug,python)