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

قراءه اي ملف في بايثون على هيئة binary

Mostafa mahmoud3

السؤال

Recommended Posts

  • 0
#########################       إنشاء ملف ثنائي    ############
# إنشاء ملف ثنائي
# w تشير إلى وضع الكتابة 
# b تشير إلى ملف ثنائي
f=open("binfile.bin","wb")
# تعريف مصفوفة
num=[5, 10, 15, 20, 25]
# تحويلها لصيغة ثنائية
arr=bytearray(num)
# كتابتها في ملف
f.write(arr)
f.close()
#########################                    قراءته    ##############
import pathlib
s=""
for byte in pathlib.Path("binfile.bin").read_bytes(): # decimal ستقرأ البايت وتحوله ل 
    s+="{0:b}".format(byte) # s  نحوله لثنائي مرة أخرى ونضيف ماقرأناه ل
print(s)
# 101101011111010011001

حيث أن pathlib تسمح لنا بالمرور على الملف بايت بايت.

تم التعديل في بواسطة Ali Haidar Ahmad
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 40 دقائق مضت قال Ali Haidar Ahmad:

#########################       إنشاء ملف ثنائي    ############
# إنشاء ملف ثنائي
# w تشير إلى وضع الكتابة 
# b تشير إلى ملف ثنائي
f=open("binfile.bin","wb")
# تعريف مصفوفة
num=[5, 10, 15, 20, 25]
# تحويلها لصيغة ثنائية
arr=bytearray(num)
# كتابتها في ملف
f.write(arr)
f.close()
#########################                    قراءته    ##############
import pathlib
s=""
for byte in pathlib.Path("binfile.bin").read_bytes(): # decimal ستقرأ البايت وتحوله ل 
    s+="{0:b}".format(byte) # s  نحوله لثنائي مرة أخرى ونضيف ماقرأناه ل
print(s)
# 101101011111010011001

حيث أن pathlib تسمح لنا بالمرور على الملف بايت بايت.

 

بتاريخ 40 دقائق مضت قال Ali Haidar Ahmad:

#########################       إنشاء ملف ثنائي    ############
# إنشاء ملف ثنائي
# w تشير إلى وضع الكتابة 
# b تشير إلى ملف ثنائي
f=open("binfile.bin","wb")
# تعريف مصفوفة
num=[5, 10, 15, 20, 25]
# تحويلها لصيغة ثنائية
arr=bytearray(num)
# كتابتها في ملف
f.write(arr)
f.close()
#########################                    قراءته    ##############
import pathlib
s=""
for byte in pathlib.Path("binfile.bin").read_bytes(): # decimal ستقرأ البايت وتحوله ل 
    s+="{0:b}".format(byte) # s  نحوله لثنائي مرة أخرى ونضيف ماقرأناه ل
print(s)
# 101101011111010011001

حيث أن pathlib تسمح لنا بالمرور على الملف بايت بايت.

شكراً أخي الكريم على اجابتك لكن انا اريد اضعة في while وان يقرأ 8 بايت كل مرة

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 22 دقائق مضت قال Mostafa mahmoud3:

 

شكراً أخي الكريم على اجابتك لكن انا اريد اضعة في while وان يقرأ 8 بايت كل مرة

وما الغاية من وضعه ضمن while؟؟؟!

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 3 ساعات قال Mostafa mahmoud3:

 

شكراً أخي الكريم على اجابتك لكن انا اريد اضعة في while وان يقرأ 8 بايت كل مرة

عذراً لم أنتبه أنك تريد قراءة 8 بايتات ظننتها بتات، في هذه الحالة يمكنك القيام بذلك كالتالي:

f=open("binfile.bin","wb")
# تعريف مصفوفة
num=[5,10,15,20,25,3,4,1,6]
# تحويلها لصيغة ثنائية
arr=bytearray(num)
# كتابتها في ملف
f.write(arr)
f.close()
###########################################################
with open("binfile.bin", "rb") as f:    
    bytes = f.read(8)
    while bytes:
        s=''
        for i in list(bytes):
            s+="{0:b}".format(i)
        print(s)
        bytes = f.read(8)
f.close()
"""
101101011111010011001111001
110
"""

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 9 ساعات قال Ali Haidar Ahmad:

عذراً لم أنتبه أنك تريد قراءة 8 بايتات ظننتها بتات، في هذه الحالة يمكنك القيام بذلك كالتالي:


f=open("binfile.bin","wb")
# تعريف مصفوفة
num=[5,10,15,20,25,3,4,1,6]
# تحويلها لصيغة ثنائية
arr=bytearray(num)
# كتابتها في ملف
f.write(arr)
f.close()
###########################################################
with open("binfile.bin", "rb") as f:    
    bytes = f.read(8)
    while bytes:
        s=''
        for i in list(bytes):
            s+="{0:b}".format(i)
        print(s)
        bytes = f.read(8)
f.close()
"""
101101011111010011001111001
110
"""

 

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

انا اريد ان ارجع نفس الخطوات إلي الوراء لاصنع ملف اخر مشابة للملف الاول واسف على الإطالة

تم التعديل في بواسطة Mostafa mahmoud3
رابط هذا التعليق
شارك على الشبكات الإجتماعية

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...