我正在尝试打开最新的日语维基百科数据库,以便在Linux上阅读Python 3.3.1,但是Segmentation fault (core dumped)这个短程序出错:
with open("jawiki-latest-pages-articles.xml") as f:
text = f.read()
Run Code Online (Sandbox Code Playgroud)
文件本身很大:
-rw-r--r-- 1 fredrick users 7368183805 May 17 20:19 jawiki-latest-pages-articles.xml
Run Code Online (Sandbox Code Playgroud)
所以看起来我可以存储的字符串有多长的上限.解决这种情况的最佳方法是什么?
我的最终目标是计算文件中最常见的字符,有点像Jack Halpern的"报纸中最常用的汉字"的现代版本.:)
Ada*_*eld 11
不要一次阅读整篇文章.即使您的Python发行版编译为64位程序(在32位程序中根本不可能分配超过4 GB的虚拟内存),即使您有足够的RAM来存储它,它仍然是一个坏的想法立即将它全部读入内存.
一个简单的选择是一次读一行并处理每一行:
with open("jawiki-latest-pages-articles.xml") as f:
for line in f:
# Process one line
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用固定大小的块处理它:
while True:
data = f.read(65536) # Or any other reasonable-sized chunk
if not data:
break
# Process one chunk of data. Make sure to handle data which overlaps
# between chunks properly, and make sure to handle EOF properly
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
937 次 |
| 最近记录: |