0
在Python中,我正在填充一個對象以模擬與本地計算機上的rsyslog相關的配置,環境和其他方面(RHEL 6.4 Python 2.6.4)我循環了許多rsyslog守護進程(this_instance_number)以及配置文件中定義的許多屬性(屬性)。如何使用字符串格式來動態分配變量
用這些值填充對象。
考慮以下變量:
this_instance_number=5
attribute="startupscript"
下面的代碼行,
print ('rsyslog.instance%(instance_number)s.%(attribute)s' %\
{"instance_number": this_instance_number, "attribute": attribute})
將打印這樣的文字:
rsyslog.instance5.startupscript
我怎樣才能然後分配屬性的文本會引用基於該格式字符串的值?
例如,如果硬編碼,我會分配:
rsyslog.instance5.startupscript="/etc/init.d/sample"
但是,我想給它分配是這樣的:
('rsyslog.instance%(instance_number)s.%(attribute)s' %\
{"instance_number": this_instance_number, "attribute": attribute}) = variable
的Martijn,那麼我們如何填充更深的對象?如果我需要編輯我原來的問題,我會的。簡而言之,我正在循環創建rsyslog。,並在該循環內創建rsyslog。 。 s。你的setattr看起來是將對象的屬性設置回剛剛讀取的任何內容,但是我將設置唯一值。是否有可能像這樣使用settattr?:setattr(rsyslog,instance5.startupscript,「/etc/init.d/sample」)?通過擴展,那麼我們如何動態替換「instance5.startupscript」? –
@JustinHaynes:使用通用方法更新以允許任意深度屬性鏈。 –
@JustinHaynes:儘管原始方法仍然可以正常工作,但你必須在循環中的某個地方找到一些變量。 –