1

私は DRY の大きな支持者であり、CFGファイルを共通セクションと環境固有のセクションに分割し、環境セクションを共通セクションから「継承」させたいと考えています。

[generic]
basedir = ~/computational-services/jobs
pattern = Job*
usage-jar = ../lib/usage-logging-client.jar

[dev-test]
age = 7
dirs = [
     ('%(basedir)s/rundir01', %(age)s, '%(pattern)s', 'cleanupRunDir01'),
     ('%(basedir)s/linuxNonimmediate', %(age)s, '%(pattern)s', 'cleanupLinuxNonimmediate01'),
     ]

[prod]
age = 14
dirs = [
     ('%(basedir)s/rundir01', %(age)s, '%(pattern)s', 'cleanupRunDir01'),
     ]

現在、次のエラーが発生しています。

ConfigParser.InterpolationMissingOptionError: Bad value substitution:
    section: [dev-test]
    option : dirs
    key    : basedir
    rawval : [
('%(basedir)s/rundir01', %(age)s, '%(pattern)s', 'cleanupRunDir01'),
('%(basedir)s/linuxNonimmediate', %(age)s, '%(pattern)s', 'cleanupLinuxNonimmediate01'),
]

繰り返しますが、すべてにbasedirandpatternを追加すると、次のようになります。[dev-test]

[dev-test]
age = 7
basedir = ~/computational-services/jobs
pattern = Job*
dirs = [
     ('%(basedir)s/rundir01', %(age)s, '%(pattern)s', 'cleanupRunDir01'),
     ('%(basedir)s/linuxNonimmediate', %(age)s, '%(pattern)s', 'cleanupLinuxNonimmediate01'),
     ]

あるセクションのキー/値を別のセクションで使用する方法はありgeneric.basedirますgeneric:basedirか?

ありがとうございました。

4

1 に答える 1

2

ああ、申し訳ありませんが、ドキュメントをもう一度確認して、次のことを読んでくださいDEFAULT

[DEFAULT]
basedir = ~/computational-services/jobs
pattern = Job*
usage-jar = ../lib/usage-logging-client.jar

[dev-test]
age = 7
dirs = [
     ('%(basedir)s/rundir01', %(age)s, '%(pattern)s', 'cleanupRunDir01'),
     ('%(basedir)s/linuxNonimmediate', %(age)s, '%(pattern)s', 'cleanupLinuxNonimmediate01'),
     ]

SO を確認するのと同じくらい多くの時間をドキュメントの検索に費やす必要があります。:)

于 2013-07-12T16:38:41.443 に答える