私はpythonアプリケーションを書いています。PyYaml を使用して Python オブジェクトを yaml にダンプしようとしています。Python 2.6 を使用し、Ubuntu Lucid 10.04 を実行しています。Ubuntu パッケージで PyYAML パッケージを使用しています: http://packages.ubuntu.com/lucid/python/python-yaml
オブジェクトには 3 つのテキスト変数とオブジェクトのリストがあります。ざっくりですが、こんな感じです。
ClassToDump:
#3 text variables
text_variable_1
text_variable_2
text_variable_3
#a list of AnotherObjectsClass instances
list_of_another_objects = [object1,object2,object3]
AnotherObjectsClass:
text_variable_1
text_variable_2
text_variable_3
ダンプしたいクラスには、AnotherObjectClass インスタンスのリストが含まれています。このクラスには、いくつかのテキスト変数があります。
PyYaml はどういうわけか、コレクションを AnotherObjectClass インスタンスにダンプしません。PyYAML は、text_variable_1、text_variable_2、および text_variable_3 をダンプします。
ClassToDump インスタンスをダンプするために、次の pyYaml API を使用しています。
classToDump = ClassToDump();
yaml.dump(ClassToDump,yaml_file_to_dump)
オブジェクトのリストを YAML にダンプした経験のある人はいますか?
実際の完全なコード スニペットは次のとおりです。
def write_config(file_path,class_to_dump):
config_file = open(file_path,'w');
yaml.dump(class_to_dump,config_file);
def dump_objects():
rule = Miranda.Rule();
rule.rule_condition = Miranda.ALL
rule.rule_setting = ruleSetting
rule.rule_subjects.append(rule1)
rule.rule_subjects.append(rule2)
rule.rule_verb = ruleVerb
write_config(rule ,'./config.yaml');
これは出力です:
!!python/object:Miranda.Rule rule_condition: ALL rule_setting: !!python/object:Miranda.RuleSetting {confirm_action: true, description: My Configuration, enabled: true, recursive: true, source_folder: source_folder} rule_verb: !!python /object:Miranda.RuleVerb {compression: true, dest_folder: /home/zainul/Downloads, type: Move File}