🎢 Как Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±ΠΈΡ‚Ρ‹ Π² Ρ„Π°ΠΉΠ» python ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΌΡƒΠ·Ρ‹ΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΡˆΠ΅Π΄Π΅Π²Ρ€

Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±ΠΈΡ‚Ρ‹ Π² Ρ„Π°ΠΉΠ» Π² Python, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ bitstring. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:


import bitstring

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ строки Π±ΠΈΡ‚ΠΎΠ²
bit_string = bitstring.BitArray(bin='101010')

# ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° для записи Π±ΠΈΡ‚ΠΎΠ²
with open('file.bin', 'wb') as file:
    # Π—Π°ΠΏΠΈΡΡŒ Π±ΠΈΡ‚ΠΎΠ² Π² Ρ„Π°ΠΉΠ»
    file.write(bit_string.tobytes())
    

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚

Как Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±ΠΈΡ‚Ρ‹ Π² Ρ„Π°ΠΉΠ» Π² Python

Π—Π°ΠΏΠΈΡΡŒ Π±ΠΈΡ‚ΠΎΠ²ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² Ρ„Π°ΠΉΠ» ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, особСнно Π² области ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, Π°ΡƒΠ΄ΠΈΠΎ ΠΈΠ»ΠΈ Π²ΠΈΠ΄Π΅ΠΎ. Π’ Python Π΅ΡΡ‚ΡŒ нСсколько способов записи Π±ΠΈΡ‚ΠΎΠ² Π² Ρ„Π°ΠΉΠ», ΠΈ ΠΌΡ‹ рассмотрим ΠΈΡ… Π½ΠΈΠΆΠ΅.

1. ИспользованиС модуля struct

ΠœΠΎΠ΄ΡƒΠ»ΡŒ struct Π² Python прСдоставляСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ Π²ΠΈΠ΄ ΠΈ распаковки Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ³ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот ΠΌΠΎΠ΄ΡƒΠ»ΡŒ для записи Π±ΠΈΡ‚ΠΎΠ² Π² Ρ„Π°ΠΉΠ».


import struct

# ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Ρ„Π°ΠΉΠ» Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠΉ записи
file = open("file.bin", "wb")

# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ для записи
values = (10, 20, 30, 40)

# ЗаписываСм значСния Π² Ρ„Π°ΠΉΠ»
file.write(struct.pack('4i', *values))

# Π—Π°ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Ρ„Π°ΠΉΠ»
file.close()
    

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Ρ„Π°ΠΉΠ» "file.bin" Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠΉ записи ('wb') ΠΈ создаСм ΠΊΠΎΡ€Ρ‚Π΅ΠΆ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ для записи. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ struct.pack(), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Ρ‚ΡŒ значСния Π² Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΈ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΡ… Π² Ρ„Π°ΠΉΠ». НаконСц, ΠΌΡ‹ Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Ρ„Π°ΠΉΠ».

2. ИспользованиС модуля bitarray

Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ способ записи Π±ΠΈΡ‚ΠΎΠ² Π² Ρ„Π°ΠΉΠ» Π² Python - использованиС модуля bitarray. Π­Ρ‚ΠΎΡ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ прСдоставляСт ΡƒΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±ΠΈΡ‚Π°ΠΌΠΈ ΠΈ Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΌΠΈ массивами.


from bitarray import bitarray

# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΉ массив
bits = bitarray()

# ДобавляСм Π±ΠΈΡ‚Ρ‹ Π² массив
bits.append(True)
bits.append(False)
bits.append(True)
bits.append(True)

# ЗаписываСм Π±ΠΈΡ‚Ρ‹ Π² Ρ„Π°ΠΉΠ»
with open("file.bin", "wb") as file:
    bits.tofile(file)
    

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создаСм Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΉ массив с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ bitarray() ΠΈ добавляСм Π² Π½Π΅Π³ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π±ΠΈΡ‚Ρ‹. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Ρ„Π°ΠΉΠ» "file.bin" Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠΉ записи с использованиСм ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° with ΠΈ записываСм Π±ΠΈΡ‚Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° tofile().

3. ИспользованиС модуля numpy

Если Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ с большими массивами чисСл ΠΈΠ»ΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ numpy для записи Π±ΠΈΡ‚ΠΎΠ² Π² Ρ„Π°ΠΉΠ».


import numpy as np

# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ массив Π±ΠΈΡ‚ΠΎΠ²
bits = np.array([1, 0, 1, 1], dtype=np.uint8)

# ЗаписываСм массив Π² Ρ„Π°ΠΉΠ»
with open("file.bin", "wb") as file:
    bits.tofile(file)
    

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создаСм массив Π±ΠΈΡ‚ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ модуля numpy ΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠ°ΠΊ np.uint8 для прСдставлСния ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π±ΠΈΡ‚Π°. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Ρ„Π°ΠΉΠ» "file.bin" Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠΉ записи с использованиСм ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° with ΠΈ записываСм массив Π±ΠΈΡ‚ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° tofile().

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрСли Ρ‚Ρ€ΠΈ способа записи Π±ΠΈΡ‚ΠΎΠ² Π² Ρ„Π°ΠΉΠ» Π² Python. ΠœΡ‹ использовали ΠΌΠΎΠ΄ΡƒΠ»ΠΈ struct, bitarray ΠΈ numpy для ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ ΠΈ записи Π±ΠΈΡ‚ΠΎΠ². Π’Ρ‹Π±ΠΎΡ€ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ способа зависит ΠΎΡ‚ вашСй Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅.

Π£Ρ‡ΠΈΡ‚Ρ‹Π²Π°ΠΉΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ записи Π±ΠΈΡ‚ΠΎΠ² Π² Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ Π±ΠΈΡ‚ΠΎΠ² ΠΈΠ· Ρ„Π°ΠΉΠ»Π° Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ структуру Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ порядок Π±Π°ΠΉΡ‚ΠΎΠ². ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ запись Π±ΠΈΡ‚ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ошибкам ΠΈΠ»ΠΈ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ. Π‘ΡƒΠ΄ΡŒΡ‚Π΅ остороТны ΠΈ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² Python.

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

Π Π°Π±ΠΎΡ‚Π° с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Π² Python. Π§Ρ‚Π΅Π½ΠΈΠ΅ ΠΈ запись Π΄Π°Π½Π½Ρ‹Ρ…

#53. Π—Π°ΠΏΠΈΡΡŒ Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ„Π°ΠΉΠ» Π² тСкстовом ΠΈ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ°Ρ… | Python для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

Π Π°Π±ΠΎΡ‚Π° с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Π² Python. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅, Ρ‡Ρ‚Π΅Π½ΠΈΠ΅, запись, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ WITH-AS | Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ курс

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

Π§Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ x Π² Python? πŸπŸ”

Как ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ список строк Π² Ρ†Π΅Π»Ρ‹Π΅ числа Π² Python

Π¨Π°Π³ΠΈ ΠΏΠΎ Ρ‡Ρ‚Π΅Π½ΠΈΡŽ ΠΊΠΎΠ΄Π° Python для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… 🐍

🎢 Как Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±ΠΈΡ‚Ρ‹ Π² Ρ„Π°ΠΉΠ» python ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΌΡƒΠ·Ρ‹ΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΡˆΠ΅Π΄Π΅Π²Ρ€

Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΠ· JSON Python? πŸ—‘οΈ

πŸ“ˆ Как ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π³Ρ€Π°Ρ„ΠΈΠΊ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Python? 🐍

πŸ” Как ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ слСдованиС Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅: руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ