みなさんおはようございます!(ええ、あなたの側に朝は必要ありません;-))
私があなたのところに来たのは、説明できないコードの小さなバグで 1 日を始めているからです。
私は現在、2つの簡単なことを行うことを目的としたクラスを構築しています:
YAML 形式の構成ファイルを開き、これをロードします。
私にとって残念なことに、私の真新しい革命的プログラム (これは明らかに冗談です) は、今日、良き兵士になりたくないので、本来すべきことを行うことを拒否しています。
これが私のコードです:
main.py 部分:
#!/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
したがって、これら 2 つのコードの問題は、次の宣言に起因しているようです。
parsed_config_file = yaml.load(app_config_file, 'r') <-- Line 22
非常に美しいエラーメッセージにつながります:
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
ここで、app_config_file 変数を印刷しようとするか、for ループを使用してこのファイルを読み取ろうとすると、すべてが完璧で、印刷が正常に機能し、ファイルが開いて読み取ることができます。
誰かが YAML モジュール (PyYAML のもの) を使用して既にこの状況に直面している場合、私は彼の解決策に興味があります;-)
どうもありがとう!