سؤال

لدي برنامج يمسك ببعض البيانات من خلال SSH باستخدام Paramiko:

ssh = paramiko.SSHClient()

ssh.connect(main.Server_IP, username=main.Username, password=main.Password)

ssh_stdin_host, ssh_stdout_host, ssh_stderr_host =ssh_session.exec_command(setting.GetHostData)

أرغب في إزالة الأسطر الأربعة الأولى من SSH_STDOUT_HOST. لقد حاولت استخدام Stringio لاستخدام خطوط القراءة مثل هذا:

output = StringIO("".join(ssh_stdout_host))
data_all = output.readlines()

لكني ضاعت بعد هذا. ماذا سيكون نهجا جيدا؟ أنا أستخدم بيثون 2.6.5. شكرًا.

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

المحلول

يوفر القراءة جميع البيانات

allLines = [line for line in stdout.readlines()]
data_no_firstfour = "\n".join(allLines[4:])

نصائح أخرى

كيفية إزالة الخطوط من stdout في بيثون؟

(هذه إجابة عامة لإزالة الخطوط من stdout نافذة وحدة التحكم بيثون, وليس له علاقة بسؤال محدد يتضمن paramiko ، ssh إلخ)

أنظر أيضا: هنا و هنا

بدلا من استخدام print أمر أو print() وظيفة ، استخدام sys.stdout.write("...") مدموج مع sys.stdout.flush(). لمحو الخط المكتوب ، انتقل إلى "العودة إلى السطر السابق" والكتابة فوق جميع الأحرف عن طريق المساحات باستخدام sys.stdout.write('\r'+' '*n), ، أين n هو عدد الأحرف في السطر.


مثال لطيف يقول كل شيء:

import sys, time

print ('And now for something completely different ...')
time.sleep(0.5)

msg = 'I am going to erase this line from the console window.'
sys.stdout.write(msg); sys.stdout.flush()
time.sleep(1)

sys.stdout.write('\r' + ' '*len(msg))
sys.stdout.flush()
time.sleep(0.5)

print('\rdid I succeed?')
time.sleep(1)

تعديلبدلاً من sys.stdout.write(msg); sys.stdout.flush(), ، يمكنك أيضا استخدام

print(msg, end='')

لإصدارات Python أدناه 3.0 ، ضع from __future__ import print_function في الجزء العلوي من البرنامج النصي/الوحدة النمطية لكي يعمل هذا.

لاحظ أن هذا الحل يعمل مع نافذة Console Stdout Python ، على سبيل المثال قم بتشغيل البرنامج النصي بالنقر بزر الماوس الأيمن واختيار "Open with -> Python". لا يعمل مع Scite أو الخمول أو الكسوف أو المحررين الآخرين مع نوافذ وحدة التحكم المدمجة. أنا في انتظار حل لذلك هنا.

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