2013-11-07 2 views
4

, поэтому мне нужно получить доступ к сеансу telnet. В частности, эфемериды JPL. Я точно знаю, что мне нужно сделать в командной строке, но у меня возникли проблемы с использованием пакета telnetlib.Доступ к сеансу telnet в python

Вот шаги, которые мне нужно пронести через командную строку:

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 

, а затем после того, что есть большой выход, что мне нужно сохранить в текстовый файл, или просто сохранить в качестве переменной. Я буду использовать его позже.

И следуя этим входам шаг за шагом должно заставить вас точно бит информации, мне нужно, чтобы захватить

Любые советы?

ответ

5

Я хотел бы использовать telnetlib.Telnet.expect(), что-то вроде этого:

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

Именно то, что мне было нужно. Спасибо – TallnGinger

1

В период с апреля по май 2013 года, некоторые люди на самом деле написал весь пакет Python вокруг интерфейса Horizons Telnet JPL,. Его можно найти здесь:

https://pypi.python.org/pypi/HorizonJPL

+0

Существует также https://pypi.python.org/pypi/jplephem – Gabriel