Writing Binary Files in Python 3.x

chaoticflow
Messages
8
Reaction score
0
Hi,

I've been trying to write a simple binary file in Python 3 and have not yet been able to find a clear answer / solution online.

Could you please suggest a simple way to read / write binary files in Python 3?

My Code:

Code:
# Create Binary File

def dec_base(k,b=2):
    """ Default base is 2 """
    num = ""
    while k:
        num +=str(k%b)
        k = k//2
    return int(num)

test_list = []
for i in range(10):
    test_list.append(dec_base(i))
 
with open("test.bin", "wb") as f:
    for i in test_list:
        f.write(bin(int(i)))

Any help is appreciated.
 
on Phys.org
You have misunderstood the builtin bin function. Print its output to the console to see what it does. If you must write ints to a binary file, you wil need to choose an encoding. Use the struct module.
 
The following code creates and initializes a list object (numList), and then packs it into a struct named buf. The code writes the struct to a file opened in binary mode, and closes the file.

After that, the code reopens the file, reads the contents, and unpacks the contents into a list. After printing the list, the code closes the file again.

In the pack and unpack operations, the "10i" string is a format string used to pack or unpack the 10 integer values.
Python:
import struct

numList = []
with open("test.bin", "wb") as f:
   for i in range(10):
      numList.append(i)

   buf = struct.pack( "10i",  *numList)
   f.write(buf)
   f.close()

with open("test.bin", "rb") as f:
   f.read(-1)
   list = struct.unpack("10i", buf)
   print(numList)
   f.close()
 
Last edited:
  • Like
Likes   Reactions: FactChecker
Note that calling your list 'list' will mask the builtin type. Also note that explicit closing of the file is unnecessary within the with context manager. The file object's __exit__ method will close the file.
 
Integrand said:
Note that calling your list 'list' will mask the builtin type.
Which I didn't intend to do. I have edited my code to use a different variable name.
Integrand said:
Also note that explicit closing of the file is unnecessary within the with context manager. The file object's __exit__ method will close the file.
 

Similar threads

  • · Replies 2 ·
Replies
2
Views
2K
Replies
55
Views
8K
  • · Replies 34 ·
2
Replies
34
Views
6K
Replies
3
Views
3K
  • · Replies 47 ·
2
Replies
47
Views
5K
  • · Replies 57 ·
2
Replies
57
Views
7K
  • · Replies 28 ·
Replies
28
Views
6K
Replies
4
Views
2K
  • · Replies 12 ·
Replies
12
Views
9K
  • · Replies 43 ·
2
Replies
43
Views
5K