YAML加载期间出现python str错误
大家早上好!(是的,我知道,早上在你这边没有必要;-)) 我来找你是因为我在一段我无法解释的代码中发现了一个小错误 我目前正在构建一个类,目标是做两件简单的事情: 打开YAML格式的配置文件,然后加载此文件 不幸的是,我的全新革命计划(这显然是一个笑话)今天不想成为一名好士兵,拒绝做它应该做的事情 这是我的密码: main.py部分:YAML加载期间出现python str错误,python,yaml,runtime-error,pyyaml,Python,Yaml,Runtime Error,Pyyaml,大家早上好!(是的,我知道,早上在你这边没有必要;-)) 我来找你是因为我在一段我无法解释的代码中发现了一个小错误 我目前正在构建一个类,目标是做两件简单的事情: 打开YAML格式的配置文件,然后加载此文件 不幸的是,我的全新革命计划(这显然是一个笑话)今天不想成为一名好士兵,拒绝做它应该做的事情 这是我的密码: main.py部分: #!/usr/bin/env python import socket from models import setting run = setting.app
#!/usr/bin/env python
import socket
from models import setting
run = setting.app_config()
run.get_config()
下面是设置模块:
import os
import yaml
class app_config:
def __init__(self, custom_cfg=None):
self.workdir = os.getcwd()
self.default_config_name = 'app_config.yaml'
self.default_config_path = self.workdir+"/assets/"
if custom_cfg is None:
self.config_file_path = self.default_config_path+self.default_config_name
else:
self.config_file_path = custom_cfg
def get_config(self):
app_config_file = open(self.config_file_path, 'r')
parsed_config_file = yaml.load(app_config_file, 'r')
app_config_file.close()
network_settings = parsed_config_file['network']
hostname = network_settings['host']
socket = network_settings['port']
buffer_size = network_settings['buffer_size']
print network_settings, hostname, socket, buffer_size
因此,这两段代码的问题似乎来自于以下声明:
parsed_config_file = yaml.load(app_config_file, 'r') <-- Line 22
parsed_config_file=yaml.load(app_config_file,'r')告诉加载函数您想打开某个文件进行读取,因此假设您给它一个文件。摆脱“r”论点
除非你想指定一个文件路径,在这种情况下,我想你想加载的是app\u config\u file\u path好的,我明白,这就是诀窍,我想解析一个文件,它是我的app\u config\u file变量指向的。事实上,config_file_path变量只是一个动态字符串对象,告诉程序在哪里查看。非常感谢你让我开心;-)
Traceback (most recent call last):
File "main.py", line 6, in <module>
run.get_config()
File "/home/dri/devil_project/models/setting.py", line 22, in get_config
parsed_config_file = yaml.load(app_config_file, 'r')
File "/usr/local/lib/python2.6/dist-packages/yaml/__init__.py", line 69, in load
loader = Loader(stream)
TypeError: 'str' object is not callable