Question

J'ai donc besoin d'accéder à une session Telnet. Plus spécifiquement le service Ephémeris de JPL. Je sais exactement ce que je dois faire dans l'invite de commande, mais j'ai eu du mal à utiliser le telnetlib forfait.

Voici les étapes dont j'ai besoin pour suivre l'invite de commande:

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

Et puis après cela, il y a une grande sortie que je dois enregistrer dans un fichier texte, ou simplement conserver en tant que variable. Je l'utiliserai plus tard.

Et suivre ces entrées étape par étape devrait vous amener à la bit exacte des informations que j'ai besoin pour saisir

Aucun conseil?

Était-ce utile?

La solution

j'utiliserais telnetlib.Telnet.expect(), quelque chose comme ça:

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])

Autres conseils

Entre avril et mai 2013, certaines personnes ont réellement écrit un package Python entier autour de l'interface Horizons Telnet de JPL. Il peut être trouvé ici:

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top