Ich bin konfrontiert mit KeyError
Ich kann nicht erklären oder verstehen. Ich habe ein Notizbuch, in dem ich eine Variable PREFIX
in einer Zelle definieren:KeyError beim Formatieren von Locals
PREFIX = "/home/mavax/Documents/info/notebook/log_study"
, die in einen Ordner enthält Protokolle einfach ein Weg ist, so dass die Leute das Notebook mit nur den Pfad ändern müssen, wenn sie wollen Führen Sie den folgenden Code aus.
Dann später (eine ganze Reihe von Zellen unter), ich benutze es, ohne Probleme:
for basename in ["log_converted_full.txt", "log_converted_trimmed.txt"]:
entries = load_log_for_insertion("%(PREFIX)s/datasets/logs/%(basename)s" % locals())
pprint(entries)
ich dann die Ausgabe erhalte ich erwarte, Dateien Bedeutung gefunden und der (sehr lange) Ausgang von den Protokollen wird gedruckt.
Ich habe einige mehr Zellen Beschreibung der Struktur I für dieses Problem implementieren, und wenn die Zeit wieder das gleiche Stück Code auszuführen kommt, erhalte ich die KeyError
:
-Code den Fehler zu bringen:
def demo_synthetic_dig_dag(data_size):
for basename in ["alert_converted_trimmed.txt"]:
###
entries = load_log_for_insertion("%(PREFIX)s/datasets/logs/%(basename)s" % locals())[:data_size]
g = AugmentedDigDag()
g.build(entries)
html(
"""
<table>
<tr><td>%s</td></tr>
</table>
""" % (
synthetic_graph_to_html(g, 2, 0.03)
)
)
und in der nächsten Zelle:
demo_synthetic_dig_dag(200)
Jupyter output:
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-179-7c2a79d0afd6> in <module>()
----> 1 demo_synthetic_dig_dag_armen(200)
<ipython-input-178-d17f57de3c01> in demo_synthetic_dig_dag(data_size)
18 for basename in ["log_converted_trimmed.txt"]:
19 ###
---> 20 entries = load_log_for_insertion("%(PREFIX)s/datasets/logs/%(basename)s" % locals())[:data_size]
21 g = AugmentedDigDag()
22 g.build(entries)
KeyError: 'PREFIX'
Ich bin ziemlich sicher, dass der Fehler ziemlich einfach und einfach dumm ist, aber dennoch, wenn jemand meine Augen öffnen könnte, wäre ich sehr dankbar!
hat gut funktioniert, vielen Dank! Ich bin ziemlich neu bei Python und kannte die '.format'-Methode nicht .... eine gute Gelegenheit, heute darüber zu lernen! –
Das ist großartig. Im Allgemeinen sollten Sie die Methode [.format] (https://docs.python.org/3.6/library/string.html#format-string-syntax) lesen, die die Strings bereitstellen. Dies ist im Allgemeinen der bevorzugte Weg format string in Python 3. ('f'-Strings sind ein weiterer neuer Weg, aber keine Notwendigkeit, das zu suchen) –
OK, ich werde den Rat befolgen :) –