2009-06-25 21 views

risposta

17

C'è WExpect for Python.

Notes nel file wexpect.py (errori di battitura invariato ed evidenziando aggiunto)

Wexpect è un porto di pexpext a Windows. Dal momento che Python per Windows non ha i moduli richiesti (pty, tty, select, termios, fctnl e resource) per eseguire pexpect, è stato necessario creare un back-end che implementasse tutte le funzioni utilizzate che si basavano su questi moduli . Wtty.py è questo back-end. In le console del mondo di Windows non sono omogenee. Possono utilizzare funzioni di input e output di livello basso o alto e per gestire correttamente entrambi i casi vengono creati due processi figlio per instacne di Spawn, con un figlio intermittente che può leggere continuamente dalla console e inviare tali dati una pipe a un'istanza di wtty. Spawner.py è resposabile dalla lettura e piping dati.

ho lasciato tanto codice intatto come ho potuto e anche cercato di lasciare il maggior numero di commenti intatto è possibile (espicially per le funzioni che non sono stati cambiati) tanti dei commenti saranno fuorviante nel loro rapporto a funzionalità specifica di . Inoltre, le funzioni sendcontrol e sendeof non sono limitate a questa volta, poiché non sono riuscito a trovare versioni di Windows significative di queste funzioni.
Inoltre, le console non hanno associato descrittori di fild su Windows, quindi la variabile globale child_fd sarà sempre None.

+0

@Symmetric: hai cambiato il collegamento a punto su [ 'winpexpect'] (http: // bitbucket .org/geertj/winpexpect). Ma ['wexpect'] (http://sage.math.washington.edu/home/goreckc/sage/wexpect/) è un modulo diverso. – jfs

+0

@ J.F.Sebastian: buon punto, quei vecchi collegamenti erano rotti quindi non ero in grado di trovare molto su wexpect. Fisso. – Symmetric

2

Usa pexpect https://github.com/pexpect/pexpect

"Pexpect è puro Python", in modo che verrà eseguito ovunque, senza Cygwin troppo,

edit: pexpect dipende modulo pty che è attualmente disponibile solo per Linux, in modo da Nik suggerito si dovrebbe usare wexpect che è una porta di pexpect

0

Lo so che è un vecchio post, ma ho utilizzato con successo Pexpect sotto Cygwin. Per ora non c'è altro modo a causa di problemi di compatibilità POSIX in Windows.

Un'altra cosa: WExpect funziona come Pexpect, infatti richiede Cygwin! A questo punto, PExpect è una scelta migliore.

Spero che questo vi aiuterà

Fabio

5

È possibile utilizzare le finestre CMD prompt.

È necessario avere python installato in Windows.

Aprire prompt cmd ed eseguire il comando di seguito.

C:\Users\xxx>pip install pexpect (se avete impostato Python Percorso nella variabile di sistema)

o

C:\Users\xxx>c:\python27\scripts\pip.exe install pexpect 

Collecting pexpect 
    Downloading pexpect-4.0.1.tar.gz (143kB) 
    100% |################################| 147kB 1.2MB/s 
Collecting ptyprocess>=0.5 (from pexpect) 
    Downloading ptyprocess-0.5.1-py2.py3-none-any.whl 
Building wheels for collected packages: pexpect 
    Running setup.py bdist_wheel for pexpect 
    Stored in directory: C:\Users\xxx\AppData\Local\pip\Cache\wheels\f2\65\89\09578bcd0efeabc7e2b0079cd62d3955c1477f2e55aa5031a4 
Successfully built pexpect 
Installing collected packages: ptyprocess, pexpect 
Successfully installed pexpect-4.0.1 ptyprocess-0.5.1 
Problemi correlati