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)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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.
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
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
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) :-).
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
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
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.
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
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.
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.
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.