W aplikacji Python chcę otworzyć Pythona Reped przez {{x0 }} klasa. Ale przed Wskoczę do interaktywnego monitów Python (za pomocą metody interact) Chcę wykonać niektóre polecenia podane jako ciągi. Tutaj minimalny przykład:

pre_commands = """for i in range(3):
    print(i*i)
for i in range(3):
    print(i*17)
"""

console = code.InteractiveConsole()


for l in pre_commands.splitlines():
    console.push(l)

console.interact(banner="", exitmsg="")

To zawsze błędne błędy z SyntaxError: invalid syntax na 3 linia pre_commands. Wygląda na to, że push to zrozumienie tylko jeden kompletne polecenie (jak

for i in range(3):
    print(i*i)

A nie inne polecenie, pomimo faktu, że InteractiveConsole.push ma mechanizm czekać, aż polecenie zostanie zakończone.

Jak mogę wykonać tę pracę z dowolnymi liniami złożonych i prostych poleceń w łańcuchu pre_commands?

0
halloleo 20 styczeń 2020, 08:50

1 odpowiedź

Najlepsza odpowiedź

Wygląda na interaktywne środki, naciśnij klawisz Enter / Return po każdym bloku, aby go wykonać.

I Wprowadź / Przycisk powrotny również oznacza nową linię. Twój kod działa, jeśli dodam nową linię po każdym wydruku jak poniżej:

pre_commands = """for i in range(3):
    print(i*i)

for i in range(3):
    print(i*17)

"""

Lub wyślij każdą linię za pomocą np. z konsolą linii.Push (L + 'n').

2
Sumit 20 styczeń 2020, 06:40