Frage

Ich muss also auf eine Telnet -Sitzung zugreifen. Genauer gesagt JPLs Ephemeris -Service. Ich weiß genau, was ich in der Eingabeaufforderung tun muss, aber ich hatte Probleme mit der telnetlib Paket.

Hier sind die Schritte, die ich durch die Eingabeaufforderung ergreifen muss:

telnet

o horizons.jpl.nasa.gov 6775

DES=C/2012 X1;

y

E

o

H06

y

2013-Nov-7 9:00

2013-Nov-17 9:00

1d

y

1,4,9,19,20,24

Und danach gibt es eine große Ausgabe, die ich in einer Textdatei speichern oder einfach als Variable behalten muss. Ich werde es später benutzen.

Und folgen Sie diesen Eingaben Schritt für Schritt sollten Sie genau zu den genauen Informationen bringen, die ich zum Abnehmen benötige

Irgendein Rat?

War es hilfreich?

Lösung

ich würde ... benutzen telnetlib.Telnet.expect(), etwas wie das:

import telnetlib

t = telnetlib.Telnet()
t.open('horizons.jpl.nasa.gov', 6775)

expect = ( ( r'Horizons>', 'DES=C/2012 X1\n' ),
           ( r'Continue.*:', 'y\n' ),
           ( r'Select.*E.phemeris.*:', 'E\n'),
           ( r'Observe.*:', 'o\n' ),
           ( r'Coordinate center.*:', 'H06\n' ),
           ( r'Confirm selected station.*>', 'y\n'),
           ( r'Accept default output.*:', 'y\n'),
           ( r'Starting *UT.* :', '2013-Nov-7 09:00\n' ),
           ( r'Ending *UT.* :', '2013-Nov-17 09:00\n' ),
           ( r'Output interval.*:', '1d\n' ),
           ( r'Select table quant.* :', '1,4,9,19,20,24\n' ),
           ( r'Scroll . Page: .*%', ' '),
           ( r'Select\.\.\. .A.gain.* :', 'X\n' )
)

with open('results.txt', 'w') as fp:
    while True:
        try:
            answer = t.expect(list(i[0] for i in expect), 10)
        except EOFError:
            break
        fp.write(answer[2])
        fp.flush()
        t.write(expect[answer[0]][1])

Andere Tipps

Zwischen April und Mai 2013 haben einige Leute tatsächlich ein ganzes Python -Paket um die Horizons Telnet -Schnittstelle von JPL geschrieben. Es kann hier gefunden werden:

https://pypi.python.org/pypi/horizonjpl

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top