我有一个使用Python 3.4和UTF-8编码生成的Python shelve文件。该文件可以在主机上正常打开和访问。但是当我在python:3.4 Docker容器中访问文件时,出现了以下问题:
>>> shelve.open('data/countries.shelf')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.4/shelve.py", line 243, in open
return DbfilenameShelf(filename, flag, protocol, writeback)
File "/usr/local/lib/python3.4/shelve.py", line 227, in __init__
Shelf.__init__(self, dbm.open(filename, flag), protocol, writeback)
File "/usr/local/lib/python3.4/dbm/__init__.py", line 94, in open
return mod.open(file, flag, mode)
_gdbm.error: Bad magic number
无论文件是在构建期间实际复制还是绑定挂载到容器中,都不会有任何区别,错误是相同的。我还比较了容器内外文件的md5sum值,它们是相同的(正如我所预期的)。但如果文件是相同的,那么魔数怎么可能不同呢?