اذهب إلى المحتوى

السؤال

نشر

لدي مشكلة متعلقة بـ sys.stdout وأريد أن أقوم بإيقاف الـ output buffering مؤقتًا، هل توجد طريقة لفعل ذلك بدون استعمال العلم -u في سطر الأوامر؟ أي القيام بهذا الأمر عن طريق كود بايثون.

 

Recommended Posts

  • 0
نشر

توجد عدة طرق لإيقاف ال output buffering منها يمكنك استخدام flush للدالة print كمثال

import time
for buffer in range(20):
    print(buffer, end=" ", flush=True)
    time.sleep(2)

أو يمكنك استخدام ()sys.stdout.flush وتوجد عدة طرق أخرى قم بالبحث عنها لإختيار الطريقة الأفضل لك

  • 1
نشر

يمكنك أن تستخدم المعامل flush في دالة print والذي تم إضافته بداية من الإصدار 3.3 كالتالي:

print('Hello, World!', flush=True)

كما يمكنك أن تقوم بإيقاف الـ output buffering لملف python معين من خلال إضافة التعليق التالي في بداية الملف:

#!/usr/bin/env python -u

ويختلف التعليق السابق حسب بيئة العمل لديك.

كما يمكنك أن تستعمل الكائن stdout من مكتبة sys كالتالي:

import io, sys
sys.stdout = io.TextIOWrapper(open(sys.stdout.fileno(), 'wb', 0), write_through=True)

كما يمكنك أن تستعمل مكتبة functools كالتالي:

import functools

print = functools.partial(print, flush=True)

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...