Ich programmiere eine Python-Benutzeroberfläche, um verschiedene Instrumente in einem Labor zu steuern. Wenn ein Skript nicht interaktiv ausgeführt wird, geht die Verbindung mit den Instrumenten am Ende des Skripts verloren, was sehr schlimm sein kann. Ich möchte dem Benutzer helfen, sich daran zu erinnern, das Skript interaktiv auszuführen.IPython run magic: Wie erstelle ich einen Alias für "run -i"?
Ich denke an zwei mögliche Wege, es zu tun. Zuerst wird in dem Titel wie angegeben, kann ich eine Alias für run -i
machen:
%alias_magic lab_run run -i
aber dies gibt einen Fehler zurück:
UsageError: unrecognized arguments: -i
Gibt es eine Möglichkeit, dies zu umgehen?
Alternativ könnte ich innerhalb des Skripts erkennen, wenn das -i
Flag weitergegeben wurde und erhöhen Sie en Fehler wenn nicht. Allerdings zeigt es nicht in der Liste nach oben sys.argv
: als
In [1]: import sys
In [2]: run -i test.py random args
['test.py', 'random', 'args']
ich nicht ipy Dateien verwenden kann, weil ich% Lauf-Flags lesen muß, hier in meiner vorherigen Frage erklärt: How to add a custom flag to IPython's magic commands? (.ipy files)
Wer sieht eine Lösung für dieses Problem?
from IPython.core.magic import register_line_magic
@register_line_magic
def r(line):
get_ipython().magic('run -i ' + line)
del r
EDIT
Wie hpaulj magic
weist darauf hin, veraltet:
'-i' von'% run' analysiert wird, und ist nicht in den Extras, die es geht auf Ihr Skript als 'sys.argv'. – hpaulj
Sieht aus wie '% alias_magic' keine Argumente, nur die 2 Zeichenfolgen. – hpaulj