HardWord نشر 4 أكتوبر 2015 أرسل تقرير نشر 4 أكتوبر 2015 أقوم باستخدام هذه الشيفرة البرمجية للحصول على مخرجات قياسية من برنامج خارجي:>>> 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 فما هي أفضل الطرق لفعل ذلك ؟ اقتباس
0 هشام رزق الله نشر 4 أكتوبر 2015 أرسل تقرير نشر 4 أكتوبر 2015 هنالك العديد من الطرق لتحويل البايتات إلى سلاسل نصية في البايثون، ومن أسهل هذه الطرق استخدام التابع 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 المصدر اقتباس
السؤال
HardWord
أقوم باستخدام هذه الشيفرة البرمجية للحصول على مخرجات قياسية من برنامج خارجي:
سيقوم تابع communicate() بإرجاع مصفوفة من البايتات كما يلي:
أريد تحويل هذه البايتات إلى سلسلة نصية عادية في البايثون لأستطيع طباعتها كما يلي:
فما هي أفضل الطرق لفعل ذلك ؟
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.