[解決済み] AttributeError: 'str' オブジェクトには 'get' 属性がありません。
2022-02-01 07:22:21
質問
解決方法がよくわからないエラーが発生しました。ネストされた辞書の最後のアイテムが尋ねられたgetを含んでおらず、エラーが発生しました。
を呼び出す非常に基本的なコードです。
for keys in interfaces:
counters = interfaces[keys].get(u'interfaceCounters', {})
print keys, "inOctets:", counters.get(u'inOctets', {}), "outOctets:", counters.get(u'outOctets', {})
以下はその出力です。
Management1 inOctets: 0 outOctets: 0
Ethernet2 inOctets: 561926946 outOctets: 49932066
Ethernet3 inOctets: 561926408 outOctets: 49932764
Ethernet1 inOctets: 319314970 outOctets: 264840242
Ethernet6 inOctets: 561897402 outOctets: 49930884
Ethernet7 inOctets: 561678430 outOctets: 50180896
Ethernet4 inOctets: 561927603 outOctets: 49931337
Ethernet5 inOctets: 561926383 outOctets: 49932935
Vlan1 inOctets:
Traceback (most recent call last):
File "ex1.py", line 36, in <module>
print keys, "inOctets:", counters.get(u'inOctets', '0'), "outOctets:", counters.get(u'outOctets', '0')
AttributeError: 'str' object has no attribute 'get'
ここでは、インターフェイスの最後尾を紹介します。
u'Management1': {u'autoNegotiate': u'off',
u'bandwidth': 1000000000,
u'burnedInAddress': u'52:54:00:01:02:d3',
u'description': u'',
u'duplex': u'duplexFull',
u'forwardingModel': u'routed',
u'hardware': u'ethernet',
u'interfaceAddress': [],
u'interfaceCounters': {u'inBroadcastPkts': 0,
u'inDiscards': 0,
u'inMulticastPkts': 0,
u'inOctets': 0,
u'inUcastPkts': 0,
u'inputErrorsDetail': {u'alignmentErrors': 0,
u'fcsErrors': 0,
u'giantFrames': 0,
u'runtFrames': 0,
u'rxPause': 0,
u'symbolErrors': 0},
u'linkStatusChanges': 2,
u'outBroadcastPkts': 0,
u'outDiscards': 0,
u'outMulticastPkts': 0,
u'outOctets': 0,
u'outUcastPkts': 0,
u'outputErrorsDetail': {u'collisions': 0,
u'deferredTransmissions': 0,
u'lateCollisions': 0,
u'txPause': 0},
u'totalInErrors': 0,
u'totalOutErrors': 0},
u'interfaceStatistics': {u'inBitsRate': 0.0,
u'inPktsRate': 0.0,
u'outBitsRate': 0.0,
u'outPktsRate': 0.0,
u'updateInterval': 300.0},
u'interfaceStatus': u'disabled',
u'lastStatusChangeTimestamp': 1245724638.6762877,
u'lineProtocolStatus': u'down',
u'mtu': 1500,
u'name': u'Management1',
u'physicalAddress': u'52:54:00:01:02:d3'},
u'Vlan1': {u'bandwidth': 0,
u'burnedInAddress': u'52:54:00:01:37:37',
u'description': u'',
u'forwardingModel': u'routed',
u'hardware': u'vlan',
u'interfaceAddress': [{u'broadcastAddress': u'255.255.255.255',
u'primaryIp': {u'address': u'10.220.88.31',
u'maskLen': 24},
u'secondaryIps': {}}],
u'interfaceStatus': u'connected',
u'lastStatusChangeTimestamp': 1250568992.891673,
u'lineProtocolStatus': u'up',
u'mtu': 1500,
u'name': u'Vlan1',
u'physicalAddress': u'52:54:00:01:37:37'}}
解決方法は?
もし
一部
の
interfaceCounters
キーがネストした辞書ではなく文字列を参照している場合は、例外処理でそれらを無視するようにします。
for keys in interfaces:
counters = interfaces[keys].get(u'interfaceCounters', {})
try:
print keys, "inOctets:", counters.get(u'inOctets', {}), "outOctets:", counters.get(u'outOctets', {})
except AttributeError:
# counters is not a dictionary, ignore and move on
pass
これは
許しを請う
原則; あなたのエントリーのほとんどが
.get()
メソッドよりも単純に速いです。
よく見て
という原則があり、そのメソッドが利用可能かどうかをテストすることになります。
関連
-
ピロウズ画像色処理の具体的な活用方法
-
[解決済み】 AttributeError("'str' object has no attribute 'read'")
-
[解決済み】Flask ImportError: Flask という名前のモジュールがない
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] Pythonで文字列の部分文字列を取得するにはどうすればよいですか?
-
[解決済み] リストの要素数を取得する方法
-
[解決済み] Pythonでオブジェクトが属性を持つかどうかを知る方法
-
[解決済み] オブジェクトの種類を決定しますか?
-
[解決済み] エラーです。" 'dict' オブジェクトには 'iteritems' という属性がありません "
-
[解決済み] AttributeError: 'NoneType' オブジェクトには 'something' という属性がありません」と表示されるのはなぜですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
pythonを使ったオフィス自動化コード例
-
PythonによるExcelファイルの一括操作の説明
-
FacebookオープンソースワンストップサービスpythonのタイミングツールKats詳細
-
[解決済み] [Solved] sklearn error ValueError: 入力に NaN、infinity または dtype('float64') に対して大きすぎる値が含まれている。
-
[解決済み】numpy: true_divide で無効な値に遭遇
-
[解決済み] 'DataFrame' オブジェクトに 'sort' 属性がない
-
[解決済み】Pythonでgoogle APIのJSONコードを読み込むとエラーになる件
-
[解決済み】Flask ImportError: Flask という名前のモジュールがない
-
[解決済み】Python: OverflowError: 数学の範囲エラー
-
[解決済み】Python - "ValueError: not enough values to unpack (expected 2, got 1)" の修正方法 [閉店].