【发布时间】:2016-11-04 12:08:04
【问题描述】:
我正在尝试使用 PyYAML 模块加载 YAML 文件,但是,我收到了 MemoryError。 文件大小似乎合理,即 28 MB。我过去加载了较大的文件,没有任何问题。我正在使用 Python27 32 位。有谁知道发生了什么,也许他们可以提出一个解决方案(我不想走分割 yaml 文件的道路)。
以下是我得到的错误:
>> yaml_results_file = yaml.load(open
(parent_folder+yaml_results_file_path+yaml_results_file_name, "r"))
Traceback (most recent call last):
File "<pyshell#7>", line 1, in <module>
yaml_results_file = yaml.load(open(parent_folder+yaml_results_file_path+yaml_results_file_name, "r"))
File "C:\Python27\lib\site-packages\yaml\__init__.py", line 71, in load
return loader.get_single_data()
File "C:\Python27\lib\site-packages\yaml\constructor.py", line 39, in get_single_data
return self.construct_document(node)
File "C:\Python27\lib\site-packages\yaml\constructor.py", line 48, in construct_document
for dummy in generator:
File "C:\Python27\lib\site-packages\yaml\constructor.py", line 398, in construct_yaml_map
value = self.construct_mapping(node)
File "C:\Python27\lib\site-packages\yaml\constructor.py", line 208, in construct_mapping
return BaseConstructor.construct_mapping(self, node, deep=deep)
File "C:\Python27\lib\site-packages\yaml\constructor.py", line 127, in construct_mapping
key = self.construct_object(key_node, deep=deep)
File "C:\Python27\lib\site-packages\yaml\constructor.py", line 99, in construct_object
self.constructed_objects[node] = data
MemoryError
【问题讨论】:
-
这是在 Windows 上吗?你试过SafeLoader,CLoader吗? YAML 文件在某处可用吗?如果不是 1) 它有锚点和别名吗? 2) 是否有类型标签(如果没有,为什么不使用安全加载)?
-
这是在 Windows 上。作为 Python 项目的一部分,我需要从 YAML 文件中读取数据。
-
顺便说一句,我切换到 64 位 Python 并解决了问题,但我仍然不明白为什么会出现 MemoryError!可能是因为 YAML 文件中键的大小?
-
文件大小可以,加载数据的时候开销很大。
标签: python python-2.7 memory yaml pyyaml