سؤال

لذلك أحتاج إلى الوصول إلى جلسة Telnet. بشكل أكثر تحديداً خدمة ephemeris JPL. أعرف بالضبط ما أحتاج إلى القيام به في موجه الأوامر ، لكنني واجهت مشكلة في استخدام telnetlib حزمة.

فيما يلي الخطوات التي أحتاج إلى اتخاذها من خلال موجه الأوامر:

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

وبعد ذلك ، هناك إخراج كبير أحتاج إلى حفظه في ملف نصي ، أو ببساطة الاحتفاظ به كمتغير. سأستخدمه لاحقًا.

واتباع هذه المدخلات خطوة بخطوة يجب أن تنقلك إلى الجزء الدقيق من المعلومات التي أحتاجها للاستيلاء عليها

اي نصيحه؟

هل كانت مفيدة؟

المحلول

سأستخدم 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])

نصائح أخرى

بين أبريل ومايو 2013 ، كتب بعض الأشخاص فعليًا حزمة Python كاملة حول واجهة Telnet Horizons JPL. ويمكن العثور عليها هنا:

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top