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

السؤال

نشر

أقوم باستخدام هذه الشيفرة البرمجية للحصول على مخرجات قياسية من برنامج خارجي:

>>> from subprocess import *
>>> command_stdout = Popen(['ls', '-l'], stdout=PIPE).communicate()[0]

سيقوم تابع communicate() بإرجاع مصفوفة من البايتات كما يلي:

>>> command_stdout
b'total 0\n-rw-rw-r-- 1 thomas thomas 0 Mar  3 07:03 file1\n-rw-rw-r-- 1 thomas thomas 0 Mar  3 07:03 file2\n'

أريد تحويل هذه البايتات إلى سلسلة نصية عادية في البايثون لأستطيع طباعتها كما يلي:

>>> print(command_stdout)
-rw-rw-r-- 1 thomas thomas 0 Mar  3 07:03 file1
-rw-rw-r-- 1 thomas thomas 0 Mar  3 07:03 file2

فما هي أفضل الطرق لفعل ذلك ؟

Recommended Posts

  • 0
نشر

هنالك العديد من الطرق لتحويل البايتات إلى سلاسل نصية في البايثون، ومن أسهل هذه الطرق استخدام التابع decode لفك تشفير حسب ترميز معين مثل utf-8 حيث سيتم تحويل البايتات إلى سلسلة نصية بترميز utf-8 كما في المثال التالي:

>>> b"abcde"
b'abcde'

# utf-8 is used here because it is a very common encoding, but you
# need to use the encoding your data is actually in.
>>> b"abcde".decode("utf-8")
'abcde'

كما يمكنك فك شيفرة البايتات لتحويلها إلى سلسلة نصية عن طريق الأمر التالي:

str(b'hello', encoding)

كما يمكنك استخدام هذه الطريقة التي تقوم بالتكرار على جميع البايتات وبعد ذلك تقوم بتحويلهم إلى حروف ثم ستقوم بإضافتها إلى سلسلة نصية:

bytes = [112, 52, 52]
"".join(map(chr, bytes))
>> p44

المصدر

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...