כיצד לקרוא קבצים בינאריים בפייתון

How Read Binary Files Python



הקובץ המכיל את הנתונים הבינארי נקרא קובץ בינארי. כל מידע בינארי מעוצב או לא מעוצב מאוחסן בקובץ בינארי, וקובץ זה אינו ניתן לקריאה אנושית ומשמש את המחשב ישירות. כאשר קובץ בינארי נדרש לקריאה או העברה ממיקום אחד למיקום אחר, תוכן הקובץ הופך או מקודד לפורמט קריא אדם. הסיומת של הקובץ הבינארי היא .bin. ניתן לקרוא את תוכן הקובץ הבינארי באמצעות פונקציה מובנית או מודול. דרכים שונות לקריאת קבצים בינאריים ב- Python הוצגו במדריך זה.

תְנַאִי מוּקדָם:

לפני בדיקת הדוגמאות של הדרכה זו, עדיף ליצור קובץ בינארי אחד או יותר לשימוש בסקריפט לדוגמה. התסריט של שני קבצי פייתון נתן להלן ליצירת שני קבצים בינאריים. ה- binary1.py ייצור קובץ בינארי בשם string.bin שיכיל נתוני מחרוזת, וה- binary2.py ייצור קובץ בינארי בשם number_list.bin שיכיל רשימה של נתונים מספריים.







Binary1.py

# פתח מטפל קבצים ליצירת קובץ בינארי

מטפל_קובץ= לִפְתוֹחַ('string.bin', 'wb')

# הוסף שתי שורות טקסט בקובץ הבינארי

מטפל_קובץ.לִכתוֹב(ב'ברוכים הבאים ל- LinuxHint. nלמד תכנות פייתון. ')

# סגור את מטפל הקבצים

מטפל_קובץ.סגור()

Binary2.py

# פתח מטפל קבצים ליצירת קובץ בינארי

קוֹבֶץ=לִפְתוֹחַ('number_list.bin','wb')

# הצהירו על רשימת ערכים מספריים

מספרים=[10,30,ארבע חמש,60,70,85,99]

# המר את הרשימה למערך

barray=bytearray(מספרים)

# כתוב מערך לתוך הקובץ

קוֹבֶץ.לִכתוֹב(barray)

קוֹבֶץ.סגור()

דוגמה 1: קרא את הקובץ הבינארי של נתוני המחרוזת לתוך מערך הבייטים

קיימות בפייתון דרכים רבות לקריאת הקובץ הבינארי. באפשרותך לקרוא את מספר הבתים המסוים או את התוכן המלא של הקובץ הבינארי בכל פעם. צור קובץ פייתון עם הסקריפט הבא. ה הפונקציה open () נהג לפתוח את string.bin לקריאה. ה הפונקציה read () שימש לקריאת 7 תווים מהקובץ בכל איטרציה של לולאה והדפסה. לאחר מכן, ה הפונקציה read () שימש ללא כל טיעון לקריאת התוכן המלא של הקובץ הבינארי שיודפס בהמשך.



# פתח את הקובץ הבינארי לקריאה

מטפל_קובץ= לִפְתוֹחַ('string.bin', 'rb')

# קרא את שלושת הבייטים הראשונים מהקובץ הבינארי

data_byte=מטפל_קובץ.לקרוא(7)

הדפס('הדפס שלוש תווים בכל איטרציה:')

# חזור על הלולאה כדי לקרוא את החלק הנותר של הקובץ

בזמןdata_byte:

הדפס(data_byte)

data_byte=מטפל_קובץ.לקרוא(7)


# קרא את כל הקובץ כמחרוזת בתים אחת

עם לִפְתוֹחַ('string.bin', 'rb') כפי שfh:

תוֹכֶן=fh.לקרוא()

הדפס('הדפס את כל התוכן של הקובץ הבינארי:')

הדפס(תוֹכֶן)

תְפוּקָה:

הפלט הבא יופיע לאחר ביצוע התסריט לעיל.







דוגמה 2: קרא את הקובץ הבינארי של נתוני המחרוזת לתוך המערך

צור קובץ פייתון עם הסקריפט הבא לקריאת קובץ בינארי בשם number_list.bin שנוצר בעבר. קובץ בינארי זה מכיל רשימה של נתונים מספריים. כמו הדוגמה הקודמת, ה הפונקציה open () השתמש בפתיחת הקובץ הבינארי לקריאה בתסריט. לאחר מכן, 5 המספרים הראשונים ייקראו מהקובץ הבינארי ויוסבו לרשימה לפני ההדפסה.

# פתח את הקובץ הבינארי לקריאה

קוֹבֶץ = לִפְתוֹחַ('number_list.bin', 'rb')

# קרא את חמשת המספרים הראשונים ברשימה

מספר= רשימה(קוֹבֶץ.לקרוא(5))

# הדפס את הרשימה

הדפס(מספר)

# סגור את הקובץ

קוֹבֶץ.סגור()

תְפוּקָה:

הפלט הבא יופיע לאחר ביצוע התסריט לעיל. הקובץ הבינארי מכיל 7 מספרים, וחמשת המספרים הראשונים הודפסו בפלט.



דוגמה 3: קרא קובץ בינארי באמצעות NumPy

הדרכים ליצירת הקובץ הבינארי באמצעות מערך NumPy וקרא את תוכן הקובץ הבינארי באמצעות לרשימה באמצעות מודול NumPy הוצגו בחלק זה של ההדרכה. לפני בדיקת התסריט המפורט להלן, עליך להתקין את מודול NumPy על ידי ביצוע הפקודה מהמסוף או התקנת חבילת NumPy בעורך Python, שם יבוצע הסקריפט. ה הפונקציה tofile () משמש ליצירת טקסט או קובץ בינארי, ו- הפונקציה fromfile () משמש ליצירת מערך על ידי קריאת טקסט או קובץ בינארי.

תחביר tofile ():

ndarray.לתייק(קוֹבֶץ,ספטמבר='',פוּרמָט='%s')

הארגומנט הראשון הוא חובה ולוקח את ערך הקובץ או המחרוזת או הנתיב כערך. הקובץ ייווצר אם יש שם קובץ בארגומנט זה. הטיעון השני הוא אופציונלי המשמש להפרדת רכיבי המערך. הארגומנט השלישי הוא גם אופציונלי ומשמש לעיצוב הפלט של קובץ הטקסט.

תחביר fomfile ():

ערמומי.מתוך הקובץ(קוֹבֶץ,dtype=לָצוּף,לספור=-1,ספטמבר='',לְקַזֵז=0,*,כמו=אף אחד)

הארגומנט הראשון הוא חובה ולוקח את ערך הקובץ או המחרוזת או הנתיב כערך. תוכן הקובץ ייקרא אם יינתן שם קובץ בארגומנט זה. ה dtype מגדיר את סוג הנתונים של המערך המוחזר. הספירה משמשת לספירת מספר הפריטים. מטרת ה ספטמבר הוא להפריד בין פריטי הטקסט או המערך. הקיזוז משמש להגדרת המיקום הנוכחי של הקובץ. הארגומנט האחרון משמש ליצירת אובייקט מערך שלא מערך NumPy .

צור קובץ פייתון עם הסקריפט הבא ליצירת קובץ בינארי באמצעות מערך NumPy ולקרוא ולהדפיס את תוכן הקובץ הבינארי.

# ייבוא ​​מודול NumPy

יְבוּאערמומיכפי שלְמָשָׁל

# הצהיר על מערך מטומטם

nparray=לְמָשָׁלמַעֲרָך([3. 4, 89, 30, ארבע חמש, 90, אחת עשרה])

# צור קובץ בינארי ממערך numpy

nparray.לתייק('list.bin')

# הדפס נתונים מהקובץ הבינארי

הדפס(לְמָשָׁלמתוך הקובץ('list.bin',dtype=לְמָשָׁלint64))

תְפוּקָה:

הפלט הבא יופיע לאחר ביצוע התסריט לעיל.

סיכום:

שלוש דרכים שונות לקריאת הקובץ הבינארי הוצגו במדריך זה באמצעות דוגמאות פשוטות. הדוגמה הראשונה החזירה את תוכן הקובץ הבינארי כמערך בתים. הדוגמה השנייה החזירה את תוכן הקובץ הבינארי כרשימה. הדוגמה האחרונה גם החזירה את תוכן הקובץ הבינארי כרשימה.