2009-06-25 9 views

Répondre

17

Il y a WExpect for Python.

Notes dans le fichier wexpect.py (fautes de frappe inchangé et mettant en évidence ajoutée)

Wexpect est un port de pexpext à Windows. Puisque python pour Windows n'a pas les modules requis (pty, tty, select, termios, fctnl, et resource) pour exécuter pexpect, il a fallu créer un back-end implémentant les fonctions utilisées pour ces modules. . Wtty.py est ce back-end. Dans les consoles mondiales Windows ne sont pas homogènes. Ils peuvent utiliser des fonctions d'entrée et de sortie de niveau faible ou élevé, et pour traiter correctement les deux cas, deux processus enfants sont créés pour l'installation de Spawn, avec un enfant intermittent qui peut lire en continu depuis la console et envoyer ces données un tuyau à une instance de wtty. Spawner.py est resposible à partir de la lecture et de la tuyauterie .

J'ai laissé intact code beaucoup plus que je pouvais et essayé aussi de laisser autant de commentaires intact est possible (espicially pour les fonctions qui ne sont pas modifiées) tant des commentaires peuvent induire en erreur dans leur relation à OS spécifique fonctionnalité. En outre, les fonctions sendcontrol et sendeof ne sont pas utilisées à cette fois, car je ne pouvais pas trouver des versions Windows significatives de ces fonctions.
En outre, les consoles n'ont pas de descripteurs de fild associés sous Windows, donc la variable globale child_fd sera toujours None.

+0

@Symmetric: vous avez changé le lien pour pointer vers [ 'winpexpect'] (http: // bitbucket .org/geertj/winpexpect). Mais ['wexpect'] (http://sage.math.washington.edu/home/goreckc/sage/wexpect/) est un module différent. – jfs

+0

@ J.F.Sebastian: bon endroit, ces anciens liens étaient cassés, donc je n'ai pas pu trouver beaucoup de choses sur wexpect. Fixé. – Symmetric

2

Utilisez pexpect https://github.com/pexpect/pexpect

"pexpect est pur Python" donc il fonctionnera partout, sans Cygwin aussi,

edit: pexpect dépend du module pty qui est actuellement disponible que pour Linux, afin Nik suggéré que vous devriez utiliser wexpect qui est un port de pexpect

0

Je sais qu'il est un ancien poste, mais je l'ai utilisé avec succès pexpect sous Cygwin. Pour l'instant il n'y a pas d'autre moyen en raison de problèmes de compatibilité POSIX sous Windows.

Autre chose: WExpect fonctionne comme Pexpect, en fait, il nécessite Cygwin! À ce stade, PExpect est un meilleur choix.

Espérons que cela aidera

Fabio

5

Vous pouvez utiliser Windows CMD rapide.

Vous devez installer python dans vos fenêtres. Ouvrez l'invite cmd et exécutez la commande ci-dessous.

C:\Users\xxx>pip install pexpect (si vous avez défini le chemin Python dans la variable système)

ou

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 
Questions connexes