In [1]:
import os

In [2]:
os.getcwd()


Out[2]:
'/home/wukai/vagrantwork/trusy_dev/code/mlplayground/python-machine-learning-book'

In [3]:
clear




In [4]:
import struct

In [5]:
f = open('sample.wav', 'rb')

In [6]:
info = f.read(44)

In [7]:
info


Out[7]:
b'RIFF\xb6\xb6\x03\x00WAVEfmt \x10\x00\x00\x00\x01\x00\x02\x00D\xac\x00\x00\x10\xb1\x02\x00\x04\x00\x10\x00data\x1c\xb6\x03\x00'

In [9]:
struct.unpack('h', b'\x01\x02')

In [10]:
struct.unpack('>h', b'\x01\x02')

In [11]:
clear

In [12]:
struct.unpack('>h', info[22:24])

In [13]:
info

In [14]:
struct.unpack('h', info[22:24])

In [15]:
struct.unpack('h', info[24:28])

In [16]:
struct.unpack('i', info[24:28])

In [17]:
struct.unpack('i', info[34:36])

In [18]:
struct.unpack('h', info[34:36])

In [19]:
import array

In [20]:
%ls

In [21]:
os.getcwd()

In [22]:
clear

In [23]:
f.seek(0, 2)

In [24]:
f.tell()

In [25]:
n = (f.tell() - 44) / 2

In [26]:
n

In [27]:
n = (f.tell() - 44) // 2

In [28]:
n

In [29]:
buf = array.array('h', (0 for _ in range(n)))

In [30]:
f.seek(44)

In [31]:
f.readinto(buf)

In [32]:
buf

In [33]:
clear

In [34]:
len(buf)

In [35]:
for i in range(n):
    buf[i] // = 8

In [36]:
for i in range(n):
    buf[i] //= 8

In [37]:
f2 = open('demo2.wav', 'wb')

In [38]:
f2.write(info)

In [39]:
buf.tofile(f2)

In [40]:
f2.close()

In [41]:
%save?

In [42]:
%save 5_1_read_bin_file.py 1-41

In [43]:
%notebook?