为何macOS下Homebrew版Python生成的小数据shelf文件体积达16MB?
Python shelve生成超大文件问题(Homebrew版Python在macOS High Sierra上的异常)
嘿,这个问题我太有印象了!你在macOS High Sierra上用Homebrew安装的Python(不管是3.6.4还是2.7.14),仅仅用shelve存两个带短字符串的小元组,结果生成的addresses文件居然飙到16MB,但换个环境就完全正常——比如Linux主机、macOS自带的Python 2.7.10,或者用官方安装包装的Python 3.6.4,生成的文件只有几KB,和社区里其他人反馈的一样。
异常场景的复现步骤
先清掉旧文件,打开Homebrew版Python交互环境:
~/tmp> rm addresses ~/tmp> python3
执行shelve操作:
Python 3.6.4 (default, Jan 6 2018, 18:43:09) [GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.39.2)] on darwin >>> import shelve >>> book = shelve.open("addresses") >>> book['flintstone'] = ('fred', '555-1234', '1233 Bedrock Place') >>> book['rubble'] = ('barney', '555-4321', '1235 Bedrock Place') >>> book.close()
查看文件大小,会发现异常大:
~/tmp> ll total 32768 -rw-r--r-- 1 moritz staff 16M Jan 24 13:05 addresses
这是Homebrew打包的Python在macOS High Sierra上的特定兼容性问题,其他环境下shelve模块的文件生成逻辑都是正常的,符合预期。
内容的提问来源于stack exchange,提问作者anothernode
相关产品推荐
相关产品推荐

