问题描述
- 编程语言: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