Gli ultimi aggiornamenti di Windows 10 includono support for ANSI escape sequences in conhost.exe.Come utilizzare il nuovo supporto per le sequenze di escape ANSI nella console di Windows 10?
sono stato in grado di confermare che le sequenze di escape vengono raccolti correttamente in cmd.exe, quindi non ho gli aggiornamenti necessari. In particolare, ho provato a digitare prompt $e[?25l
, che nasconde il cursore, e quindi prompt $e[?25h
, che mostra nuovamente il cursore.
Tuttavia, se mi metto un interprete Python, e quindi effettuare le seguenti operazioni:
>>> import sys
>>> sys.stdout.write("\033[?25l")
Ebbene, il cursore non è nascosto. Come posso impostare le cose nel modo giusto in modo che la console sia in grado di ottenere sequenze di escape da Python?
Hi Ross - grazie per questo davvero bella risposta :) Sembra si fa un sacco di cose relative console, e mi chiedo - si fa a sapere anche come raggiungere ingresso non-blocking in una console di Windows , simile a come si potrebbe fare in Linux, usando il flag O_NONBLOCK? Python Prompt Toolkit ottiene input non bloccanti utilizzando una funzione di lettura speciale esposta dall'API di Windows: https://github.com/jonathanslenders/python-prompt-toolkit/blob/master/prompt_toolkit/terminal/win32_input.py#L99 - - Non sembra che ci sia una bandiera che posso impostare, il che consentirebbe a 'sys.stdin.read()' di non bloccare? – user89
@ user89 No, sfortunatamente non c'è alcun equivalente al flag O_NONBLOCK. Windows utilizza un modello diverso che prevede l'attesa di eventi su handle e I/O sovrapposti (il successivo non è supportato per gli handle della console). Dovrai o approfondire l'API di Windows tramite i ctype o lasciare che qualcosa come i curses gestisca per te. Il supporto delle maledizioni non è fornito con Python per Windows, ma puoi scaricare una porta separatamente, vedi: https://docs.python.org/3.3/howto/curses.html –
Ha senso - Immagino che aspetterò per vedere come migliora la console di Windows (in particolare con l'imminente rilascio di bash su Windows), e per ora limitarsi a utilizzare le macchine virtuali con Linux per eseguire + sviluppare app per console. – user89