再帰辞書のロギング -- python フィールド と dictionary フィールド と logging フィールド 関連 問題

logging recursive dictionary












0
vote

問題

日本語

これを働くために奇妙な時間を持っています。

私はいくつかのマシンの情報を含む辞書を持っています。パラメータに基づいて、マシンが選択されます。

選択した情報をログに書き込みたいです。しかし、再帰の私の試みは私が行く必要がある場所に私に手を差し伸べるようです。キーを入手しますが、値は失敗します。

これは辞書

です <事前> <コード> CSTU_CFG = {'A07': { 'password': 'CastAIP', # default cast password( too lazy to use LDAP) 'host':'JSIPVWCASTD01', 'port':'2280', # Ports are assumed to be 2280 but can be any 'location': 'C:Users/WDI/Documents/CSTU/DMPRST', # use os.path to convert 'gzips': 'GZIPS', # location for zip files ( Backup ) 'schematype':{'local', 'central', 'mngt'}, 'logintv': 30, 'version': '0.9' }, 'A01': { 'machine': 'A01', 'password': 'CastAIP', # default cast password( too lazy to use LDAP) 'host':'JSIPVWCASTD01', 'port':'2280', # Ports are assumed to be 2280 but can be any 'location': 'C:Users/WDI/Documents/CSTU/DMPRST', # use os.path to convert 'gzips': 'GZIPS', # location for zip files ( Backup ) 'schematype':{'local', 'central', 'mngt'}, 'logintv': 30, 'version': '0.9' }, 'A02': { 'machine': 'A02', 'password': 'CastAIP', # default cast password( too lazy to use LDAP) 'host':'JSIPVWCASTD01', 'port':'2280', # Ports are assumed to be 2280 but can be any 'location': 'C:Users/WDI/Documents/CSTU/DMPRST', # use os.path to convert 'gzips': 'GZIPS', # location for zip files ( Backup ) 'schematype':{'local', 'central', 'mngt'}, 'logintv': 30, 'version': '0.9' } } logname = 'CSTU_'+timestr+'_'+ schemaname + '.CLOG' logging.basicConfig(filename=logname,filemode='a',format='%(asctime)s,%(msecs)d %(name)s %(levelname)s %(message)s', datefmt='%H:%M:%S',level=logging.DEBUG) logging.debug("Starting CSTU_DUMP") # print the CSTU_CFG file into the log for key,value in CSTU_CFG: logging.debug(key + " => " + value)

私は明らかにロギング上のポイントを取得していません。私は推奨された修正を少し試してみました、そして私は何もない、またはさまざまなエラーを得ました。私は明らかにそれを難し​​くすることができますが、それは意図ではありません。 ありがとう

英語

Having an odd time getting this to work;

I have a dictionary that contains the information for several machines. Based on a parameter, the machine is selected.

I would like to write the selected information to the log. But my attempts at recursion don't seem to get me where I need to go. I get the key but the value fails.

This is the dictionary

CSTU_CFG =  {'A07': {                      'password': 'CastAIP',                          # default cast password( too lazy to use LDAP)         'host':'JSIPVWCASTD01',         'port':'2280',                                  # Ports are assumed to be 2280 but can be any          'location': 'C:Users/WDI/Documents/CSTU/DMPRST',  # use os.path to convert         'gzips': 'GZIPS',                               # location for zip files ( Backup )         'schematype':{'local', 'central', 'mngt'},         'logintv': 30,         'version': '0.9'         },          'A01': {         'machine': 'A01',         'password': 'CastAIP',                          # default cast password( too lazy to use LDAP)         'host':'JSIPVWCASTD01',         'port':'2280',                                  # Ports are assumed to be 2280 but can be any          'location': 'C:Users/WDI/Documents/CSTU/DMPRST',  # use os.path to convert         'gzips': 'GZIPS',                               # location for zip files ( Backup )         'schematype':{'local', 'central', 'mngt'},         'logintv': 30,         'version': '0.9'         },         'A02': {         'machine': 'A02',         'password': 'CastAIP',                          # default cast password( too lazy to use LDAP)         'host':'JSIPVWCASTD01',         'port':'2280',                                  # Ports are assumed to be 2280 but can be any          'location': 'C:Users/WDI/Documents/CSTU/DMPRST',  # use os.path to convert         'gzips': 'GZIPS',                               # location for zip files ( Backup )         'schematype':{'local', 'central', 'mngt'},         'logintv': 30,         'version': '0.9'         }     }  logname = 'CSTU_'+timestr+'_'+ schemaname + '.CLOG'         logging.basicConfig(filename=logname,filemode='a',format='%(asctime)s,%(msecs)d %(name)s %(levelname)s %(message)s', datefmt='%H:%M:%S',level=logging.DEBUG) logging.debug("Starting CSTU_DUMP")  # print the CSTU_CFG file into the log  for key,value in CSTU_CFG:    logging.debug(key + " => " + value)       

I'm obviously not getting the point on the logging. I've tried a few of the suggested fixes and I either get nothing, or various errors. I Can hard code it obviously but thats not the intent. Thanks

</div
        

回答リスト

0
 
vote
vote
ベストアンサー
 

辞書を繰り返すことができ、そのキーの値を取得することができます。

<事前> <コード> for k, v in CSTU_CFG.iteritems(): logging.debug(k, v)
 

You can iterate over dictionary to get key and that key's value:

for k, v in CSTU_CFG.iteritems():      logging.debug(k, v) 
</div
 
 
0
 
vote

辞書項目を繰り返すために最初にアイテムにアクセスする必要がある、直接辞書を繰り返すことはできません。

コード(<コード> for key,value in CSTU_CFG )を次のように変更する必要があります。

Python 2.x: <事前> <コード> for key, value in CSTU_CFG.iteritems(): logging.debug(key + " => " + str(value)) Python 3.xの場合: <事前> <コード> for key, value in CSTU_CFG.items(): logging.debug(key + " => " + str(value))

ところで、あなたはエラーを得ていると言った。あなたの質問で次回の正確なエラートレースを含めるのに役立ちます。

 

To iterate dictionary items you need to access the items first, not iterate the dictionary directly.

You need to change your code (for key,value in CSTU_CFG) as follows.

For Python 2.x:

for key, value in CSTU_CFG.iteritems():     logging.debug(key + " => " + str(value)) 

For Python 3.x:

for key, value in CSTU_CFG.items():     logging.debug(key + " => " + str(value))  

By the way, you said you're getting errors. It may help to include the exact error trace next time in your question.

</div
 
 
   
   

関連する質問

1  SOAPからより良い統計を得るには、400エラーを再利用して追加する  ( Reuse and add to 500 error to get better stats from soap ) 
SOAP要求に基づいて膨大な量のデータを提供します。 要求が失敗すると、SOAPはエラーについての応答オブジェクトを使用して返さなければならないエラーを指定します。 今、私たちの回答の多くは実際には不正な要求のために400のエラーであるべきであるという事実を...

5  名前付きロガーのLOG4NET戦略?  ( Log4net strategy on named loggers ) 
通常、すべてのクラスで次のことを宣言します。 <事前> <コード> private static readonly log4net.ILog log = log4net.LogManager.GetLogger( System.Refl...

3  ローリングログファイルを.NETで読み込むのに最適な方法は?  ( Best way to read in a rolling log file in net ) 
.NET 3.5SP1でローリングログファイルで読み込む必要があります。私はこれをするための最良の方法が何であるか疑問に思いますか?ファイルは本当に大きくなることがあります。私が持っていた考えは ファイルを開く 最後の読み取り回線(最初の場合は0)の読み取...

81  ファイルのダウンロードを追跡する方法  ( How do i track file downloads ) 
フラッシュプレーヤーでMP3を演奏するウェブサイトを持っています。ユーザーが「Play」をクリックすると、Flash PlayerはMP3を自動的にダウンロードして再生を開始します。 特定のソングクリップ(またはバイナリファイル)がダウンロードされた回数を追...

6  ServiceConfiguration.cscfgのカスタム/ネストされたXML設定  ( Custom nested xml settings in serviceconfiguration cscfg ) 
私たちはazureアプリケーションへの動的に設定可能なログ記録を実装しようとしています。これを行うためにエンタープライズライブラリを使用しています。 ServiceConfiguration.cscfgファイルがネストされたXMLノードを必要とするという点で受...

2  Flex3基本トレースの改善  ( Flex3 improving basic trace ) 
私はどこかをどこかに読み、あなたがたくさんのデバッグ出力を取得し始めるトレース( "foo")のクラス+行NBRを表示します。 どこで見つけるべきかについてのヒント?それはオープンソースでした、たぶんフレックスイベントで表示されます。 <事前> <コード> t...

0  カスタムロガーを作成するには、Log4netからクラスを拡張する必要があります。  ( Create custom logger should i extend class from log4net ) 
私は異常なことをしています。 アプリケーションを持っている、それはWindowsサービスとして実行されます。 それが一つのフォルダを監視するのは、そのフォルダに新しいファイルがある場合、アプリケーションはファイルに何かをすることができるということです。 1つ...

1  ロギングコードをどこに配置するか  ( Where to place logging code ) 
C#アプリケーションでロギングコードをどこに配置するべきかについて疑問に思います。 プログラム引数を記録したいとしましょう(myapp.exe -arg1のような)。 引数は、引数を解析する単純なファクトリクラスに到達する前に、Atter-Pointクラス...

2  生産レールアプリの深すぎるスタックレベル - 詳細を取得する方法  ( Stack level too deep in production rails app how to get details ) 
MySQL、Mongrel、およびNginxを使用して、256MBのSliceHostスライスで生産されて起動して起動しています。アプリの中のURLにアクセスしようとするたびにこのエラーが発生しています: <前> SystemStackError(スタックレ...

0  VB 6.0でXMLを書く  ( Writing xml with vb 6 0 ) 
Visual Basic 6.0を使用してエラーログをXMLファイルに書き込む必要があります。これを行う簡単な方法はありますか? エラーログには、エラー番号、ソース、DESC、およびタイムスタンプが含まれます。 ありがとう、 Jeff ...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有