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

السؤال

نشر

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

 

Recommended Posts

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

 

  • 0
نشر

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

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

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

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...