Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

coment ecrire des valeurs dans un fichier

4 réponses
Avatar
olivier F
Salut a tous,

Peut être que ma question va vous paraitre stupide, mais ca fait un bon bout
de temps que je me prend la tête dessus alors que je débute avec python :

Comment écrire une valeur binaire précise dans un fichier en python?

Il semble que la seul méthode soit d'employer une chaine.
write et writelines semblent l'imposer (Ce que je trouve passablement
stupide - Est ce si complique d'inscrire une valeur binaire dans un
fichier?).

J'ai bien essayer en castant mon octet avec chr() mais si ma valeur vient à
dépasser 127 ca ne marche plus, puisque un char est signé (logique).

Il semblerait donc qu'il me faille passer par une chaine unicode (Ce qui je
pense est vraiement stupide puisque les valeurs seront transformées et donc
illisibles par un autre langage - et je veux justement lire le traitement
final dans un autre langage. Je veux juste inscrire la valeur binaire de
l'octet)

N'y a t'il aucune façon simple d'écrire des octets dans un fichier en
python?
(J'ai beau m'etre procuré le "soit disant" manuel de référence de python de
chez O'reilly, impossible d'y trouver la moindre réponse, pas plus que sur
le web)

Merci par avance

Olivier

4 réponses

Avatar
Do Re Mi chel La Si Do
Bonsoir


En Python, les Strings sont des chaînes d'octets. Il n'est donc pas stupide
du tout de les utiliser, pour manipuler des ensembles d'octets (ce que tu
appelles du "binaire").

Par exemple, on peut très bien charger une image dans un String, depuis, ou
vers, un fichier.

Le problème sera plutôt du côté du transfert (logique) entre l'objet binaire
et le String. Le module struct pourra aider.


@-salutations

Michel Claveau
Avatar
olivier F
Merci

En Python, les Strings sont des chaînes d'octets. Il n'est donc pas
stupide

du tout de les utiliser, pour manipuler des ensembles d'octets (ce que tu
appelles du "binaire").


Ce que je considérait stupide venait du fait que le codage String d'un
nombre ne correspond pas à la valeur de ce nombre (donc la valeur des octets
n'est plus la même) si l'on effectue une conversion "commune" d'un nombre
dans une chaine de caractère.

Par exemple, on peut très bien charger une image dans un String, depuis,
ou

vers, un fichier.


Ok. C'est vrai pour tout langage un String étant un flux d'octets tout comme
une image (et tout comme beaucoup de donnés (toutes) en informatique). Mais
ce n'est pas vraiement une pratique courante dans les autres langages que de
se servir d'une string comme support d'un flux d'octets "brut" ;-)

Le problème sera plutôt du côté du transfert (logique) entre l'objet
binaire

et le String. Le module struct pourra aider.


Un grand merci. C'est exactement ce sur quoi je bloquais et qui faisait que
je ne comprenait pas l'emploi d'une String dans ce cas. Je viens de voir le
module struct et je comprend bien mieux comment un objet String peut ainsi
devenir le support d'un "flux" d'octets (binaires) :-).


@-salutations

Michel Claveau


Encore Merci

Olivier Fourcade

Avatar
Do Re Mi chel La Si Do
Bonjour !


C'est vrai pour tout langage un String étant un flux d'octets ... Mais
ce n'est pas vraiment une pratique courante dans les autres langages que
de se servir d'une string comme support d'un flux d'octets




Ne pas oublier que beaucoup de langages utilisent des "chaînes à zéro
terminal". Cela empêche ces langages d'utiliser l'octet 0 à l'intérieur
d'une chaîne, et, donc, entraîne une forte limitation.


@-salutations

Michel Claveau



Avatar
Koollman
"olivier F" writes:

Salut a tous,

Peut être que ma question va vous paraitre stupide, mais ca fait un bon bout
de temps que je me prend la tête dessus alors que je débute avec python :

Comment écrire une valeur binaire précise dans un fichier en python?

Il semble que la seul méthode soit d'employer une chaine.
write et writelines semblent l'imposer (Ce que je trouve passablement
stupide - Est ce si complique d'inscrire une valeur binaire dans un
fichier?).

J'ai bien essayer en castant mon octet avec chr() mais si ma valeur vient à
dépasser 127 ca ne marche plus, puisque un char est signé (logique).

Il semblerait donc qu'il me faille passer par une chaine unicode (Ce qui je
pense est vraiement stupide puisque les valeurs seront transformées et donc
illisibles par un autre langage - et je veux justement lire le traitement
final dans un autre langage. Je veux juste inscrire la valeur binaire de
l'octet)

N'y a t'il aucune façon simple d'écrire des octets dans un fichier en
python?
(J'ai beau m'etre procuré le "soit disant" manuel de référence de python de
chez O'reilly, impossible d'y trouver la moindre réponse, pas plus que sur
le web)



Le module struct permet de convertir des valeurs en donnees 'binaires'
en respectant un format precis (pour etre reutilise avec d'autre
langages, par exemple).

Il permet aussi de les recuperer.

--
Koollman
The trouble with computers is that they do what you tell them, not what
you want.