Skip to content

ಬೈನರಿ ಫೈಲ್‌ಗಳು: ಓದುವುದು ಮತ್ತು ಬರೆಯುವುದು

ಬೈನರಿ ಫೈಲ್‌ಗಳು (Binary Files) ಎಂದರೆ ಟೆಕ್ಸ್ಟ್ ಅಲ್ಲದ ಡೇಟಾವನ್ನು ಹೊಂದಿರುವ ಫೈಲ್‌ಗಳು. ಉದಾಹರಣೆಗೆ: ಚಿತ್ರಗಳು (.jpg, .png), ಆಡಿಯೋ (.mp3), ವೀಡಿಯೊ (.mp4), ಮತ್ತು ಎಕ್ಸಿಕ್ಯೂಟಬಲ್ ಫೈಲ್‌ಗಳು.

ಈ ಫೈಲ್‌ಗಳಲ್ಲಿನ ಡೇಟಾವು ಬೈಟ್‌ಗಳ (bytes) ಅನುಕ್ರಮವಾಗಿ ಸಂಗ್ರಹವಾಗಿರುತ್ತದೆ. ಬೈನರಿ ಫೈಲ್‌ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು, ನಾವು ಫೈಲ್ ಅನ್ನು ಬೈನರಿ ಮೋಡ್‌ನಲ್ಲಿ ('b') ತೆರೆಯಬೇಕು.


ಬೈನರಿ ಫೈಲ್‌ಗೆ ಬರೆಯುವುದು ('wb')

ಬೈನರಿ ಫೈಲ್‌ಗೆ ಬರೆಯಲು, ನಾವು bytes ಆಬ್ಜೆಕ್ಟ್ ಅನ್ನು write() ಮೆಥಡ್‌ಗೆ ನೀಡಬೇಕು. 'wb' (write binary) ಮೋಡ್ ಅನ್ನು ಬಳಸಲಾಗುತ್ತದೆ.

ಉದಾಹರಣೆ: ಕೆಲವು ಬೈಟ್‌ಗಳನ್ನು data.bin ಎಂಬ ಫೈಲ್‌ಗೆ ಬರೆಯೋಣ.

# ಬೈಟ್‌ಗಳ ಅನುಕ್ರಮ
byte_data = b'\x48\x65\x6c\x6c\x6f' # "Hello" in ASCII bytes

with open('data.bin', 'wb') as f:
    f.write(byte_data)
    print("ಬೈನರಿ ಫೈಲ್‌ಗೆ ಯಶಸ್ವಿಯಾಗಿ ಬರೆಯಲಾಗಿದೆ.")
b'' ಸಿಂಟ್ಯಾಕ್ಸ್ ಒಂದು ಬೈಟ್ಸ್ ಲಿಟರಲ್ (bytes literal) ಅನ್ನು ರಚಿಸುತ್ತದೆ.


ಬೈನರಿ ಫೈಲ್‌ನಿಂದ ಓದುವುದು ('rb')

ಬೈನರಿ ಫೈಲ್‌ನಿಂದ ಓದಲು, 'rb' (read binary) ಮೋಡ್ ಅನ್ನು ಬಳಸಲಾಗುತ್ತದೆ. read() ಮೆಥಡ್ ಡೇಟಾವನ್ನು bytes ಆಬ್ಜೆಕ್ಟ್ ಆಗಿ ಹಿಂತಿರುಗಿಸುತ್ತದೆ.

with open('data.bin', 'rb') as f:
    binary_content = f.read()
    print(f"ಓದಿದ ಬೈನರಿ ಡೇಟಾ: {binary_content}")

    # ಬೈಟ್‌ಗಳನ್ನು ಸ್ಟ್ರಿಂಗ್ ಆಗಿ ಪರಿವರ್ತಿಸಲು (ಡಿಕೋಡ್ ಮಾಡಲು)
    text_content = binary_content.decode('utf-8')
    print(f"ಡಿಕೋಡ್ ಮಾಡಿದ ಟೆಕ್ಸ್‌ಟ್: {text_content}")
ಔಟ್‌ಪುಟ್:
ಓದಿದ ಬೈನರಿ ಡೇಟಾ: b'Hello'
ಡಿಕೋಡ್ ಮಾಡಿದ ಟೆಕ್ಸ್‌ಟ್: Hello


ಪ್ರಾಯೋಗಿಕ ಉದಾಹರಣೆ: ಚಿತ್ರವನ್ನು ನಕಲಿಸುವುದು

ಬೈನರಿ ಫೈಲ್ ಹ್ಯಾಂಡ್ಲಿಂಗ್‌ನ ಒಂದು ಸಾಮಾನ್ಯ ಉಪಯೋಗವೆಂದರೆ ಫೈಲ್‌ಗಳನ್ನು ನಕಲಿಸುವುದು. ಒಂದು ಚಿತ್ರವನ್ನು ಓದಿ, ಅದರ ವಿಷಯವನ್ನು ಮತ್ತೊಂದು ಫೈಲ್‌ಗೆ ಬರೆಯುವ ಮೂಲಕ ನಾವು ಅದನ್ನು ನಕಲಿಸಬಹುದು.

source_image_path = 'input.jpg'
destination_image_path = 'output_copy.jpg'

try:
    with open(source_image_path, 'rb') as source_file, open(destination_image_path, 'wb') as dest_file:
        # ದೊಡ್ಡ ಫೈಲ್‌ಗಳಿಗಾಗಿ, ಚಂಕ್‌ಗಳಲ್ಲಿ ಓದುವುದು ಉತ್ತಮ
        chunk_size = 4096 # 4KB
        while True:
            chunk = source_file.read(chunk_size)
            if not chunk:
                break # ಫೈಲ್‌ನ ಅಂತ್ಯ
            dest_file.write(chunk)

    print(f"'{source_image_path}' ಅನ್ನು '{destination_image_path}' ಗೆ ಯಶಸ್ವಿಯಾಗಿ ನಕಲಿಸಲಾಗಿದೆ.")

except FileNotFoundError:
    print(f"ದೋಷ: ಮೂಲ ಫೈಲ್ '{source_image_path}' ಕಂಡುಬಂದಿಲ್ಲ.")
ಈ ವಿಧಾನವು ಯಾವುದೇ ರೀತಿಯ ಫೈಲ್ ಅನ್ನು (ಚಿತ್ರ, PDF, ಇತ್ಯಾದಿ) ನಕಲಿಸಲು ಕೆಲಸ ಮಾಡುತ್ತದೆ, ಏಕೆಂದರೆ ಇದು ಫೈಲ್‌ನ ಕಚ್ಚಾ ಬೈಟ್‌ಗಳೊಂದಿಗೆ (raw bytes) ವ್ಯವಹರಿಸುತ್ತದೆ.


ಟೆಕ್ಸ್ಟ್ vs. ಬೈನರಿ ಮೋಡ್

ಗುಣಲಕ್ಷಣ ಟೆಕ್ಸ್ಟ್ ಮೋಡ್ ('r', 'w') ಬೈನರಿ ಮೋಡ್ ('rb', 'wb')
ಡೇಟಾ ಪ್ರಕಾರ ಸ್ಟ್ರಿಂಗ್‌ಗಳು (str) ಬೈಟ್‌ಗಳು (bytes)
ಎನ್‌ಕೋಡಿಂಗ್ ಸಿಸ್ಟಮ್-ಡೀಫಾಲ್ಟ್ ಅಥವಾ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಎನ್‌ಕೋಡಿಂಗ್ ಬಳಸಿ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಎನ್‌ಕೋಡ್/ಡಿಕೋಡ್ ಮಾಡುತ್ತದೆ. ಯಾವುದೇ ಎನ್‌ಕೋಡಿಂಗ್/ಡಿಕೋಡಿಂಗ್ ಮಾಡುವುದಿಲ್ಲ; ಕಚ್ಚಾ ಬೈಟ್‌ಗಳೊಂದಿಗೆ ವ್ಯವಹರಿಸುತ್ತದೆ.
ನ್ಯೂಲೈನ್ ಸಿಸ್ಟಮ್-ನಿರ್ದಿಷ್ಟ ನ್ಯೂಲೈನ್ ಕ್ಯಾರೆಕ್ಟರ್‌ಗಳನ್ನು (\n, \r\n) ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಪರಿವರ್ತಿಸುತ್ತದೆ. ಯಾವುದೇ ನ್ಯೂಲೈನ್ ಪರಿವರ್ತನೆ ಮಾಡುವುದಿಲ್ಲ.
ಬಳಕೆ .txt, .csv, .json, .html ಫೈಲ್‌ಗಳು. ಚಿತ್ರಗಳು, ಆಡಿಯೋ, ವೀಡಿಯೊ, .zip, .exe ಫೈಲ್‌ಗಳು.

ಟೆಕ್ಸ್ಟ್ ಅಲ್ಲದ ಡೇಟಾದೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವಾಗ, ಡೇಟಾ ಭ್ರಷ್ಟಾಚಾರವನ್ನು ತಪ್ಪಿಸಲು ಬೈನರಿ ಮೋಡ್ ಅನ್ನು ಬಳಸುವುದು ಅತ್ಯಗತ್ಯ.