12 Stimmen

Kann ich Expect unter Windows verwenden, ohne Cygwin zu installieren?

Expect ist ein Modul, das dazu dient, untergeordnete Anwendungen zu erzeugen und zu steuern. Ich interessiere mich für Python und Ruby.

17voto

nik Punkte 12812

Es gibt WExpect für Python .

Anmerkungen im wexpect.py Datei (Tippfehler unverändert und Hervorhebungen hinzugefügt)

Wir erwarten ist eine Portierung von pexpext auf Windows. Da Python für Windows nicht über die erforderlichen Module (pty, tty, select, termios, fctnl und resource) fehlen, um pexpect auszuführen, war es notwendig, ein Back-End zu erstellen, das alle Funktionen implementiert die von diesen Modulen abhängen, implementiert wurden. Wtty.py ist dieses Back-End. Unter der Windows-Welt sind die Konsolen nicht homogen. Sie können Low-Level- oder High-Level Eingabe- und Ausgabefunktionen verwenden, und um beide Fälle korrekt zu behandeln, werden zwei Kindprozesse für Spawn erstellt, mit einem zwischengeschalteten Kindprozess das kontinuierlich von der Konsole lesen kann und diese Daten über eine Pipe an eine Instanz von wtty. Spawner.py ist verantwortlich für das Lesen und Verlegen von Leitungen Daten.

Ich habe so viel Code wie möglich intakt gelassen und auch versucht, so viele Kommentare wie möglich zu hinterlassen intakt zu lassen (vor allem bei Funktionen, die nicht geändert wurden), so dass viele der Kommentare werden in ihrer Beziehung zu os-spezifischen Funktionen irreführend sein. Funktionalität. Auch, die Funktionen sendcontrol und sendeof sind nicht implementiert bei nicht implementiert, da ich keine sinnvollen Windows-Versionen dieser Funktionen finden konnte.
Außerdem haben Konsolen unter Windows keine zugehörigen Bild-Deskriptoren, so dass die globale Variable child_fd immer None sein wird.

6voto

Geert Punkte 151

winpexpect ist ein nativer Hafen von pexpect für Windows. Sie ist hier zu finden:

https://github.com/geertj/winpexpect

4voto

Aravind Punkte 362

Sie können die Windows CMD-Eingabeaufforderung verwenden.

Sie müssen Python in Ihrer Windows-Installation installiert haben.

Öffnen Sie eine cmd-Eingabeaufforderung und führen Sie den folgenden Befehl aus:

C:\Users\xxx>pip install pexpect (wenn Sie den Python-Pfad in einer Systemvariablen festgelegt haben)

oder

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

2voto

Anurag Uniyal Punkte 81337

Pexpect verwenden https://github.com/pexpect/pexpect

"Pexpect ist reines Python" und läuft daher überall, auch ohne Cygwin,

edit: pexpect hängt vom pty-Modul ab, das zur Zeit nur für Linux verfügbar ist, so dass Nik vorgeschlagen, dass Sie wexpect verwenden sollten, das ein Port von pexpect ist

2voto

ckg Punkte 204

Die letzte funktionierende Version von wexpect befindet sich unter http://sage.math.washington.edu/home/goreckc/sage/wexpect/

Hoffentlich wird es bald in den Upstream eingebunden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X