
def write_file():
    """
    Écrire un fichier binaire très simple.

    En Python, on ne peut pas tout simplement écrire des chaînes dans un
    fichier dit binaire. Dans Python 3, on fait la différence entre binaire et texte.
    Quand on manipule des fichiers texte, on peut y écrire des données `str`.
    Par contre, quand on manipule des fichiers binaires, on manipule des données plus
    brutes, de type `bytes` (ou `bytearray`)

    """
    f = open("demo.bin", "wb")
    f.write(bytearray([32, 33, 34, 35, 36, 37, 38, 39, 40]))  # (9)
    f.write(b"Bonjour les amis")  # (16) ça passe car les caractères sont ASCII et leur code tient dans un byte
    f.write("Bonjour les héros, ça va bien ?".encode("utf-8"))  # (33)
    f.close()


def read_file():
    """
    Lire dans un fichier binaire très simple.

    """
    f = open("demo.bin", "rb")
    tableau = f.read(9)
    chaine1 = f.read(16)
    chaine2 = f.read(33).decode("utf-8")
    f.seek(0)
    data = f.read()
    f.close()
    # Afficher les données lues dans le fichier
    print(tableau)
    print(chaine1)
    print(chaine2)
    # Pour tester, revenir au début du fichier et tout lire d'une traite
    print(data)


if __name__ == "__main__":
    write_file()
    read_file()
