Je suis sur Ubuntu et je débute vraiment en Python. J'ai un problème
avec ce code
######################################
from os import *
obFichier = open('MonFichier.txt','w')
obFichier.write('Salut tout le monde !!!')
obFichier.close()
print '\nC\'est fini merci !\n'
######################################
qui est censé créer le fichier MonFichier.txt (s'il n'existe pas déjà)
et écrire dessus. J'ai ce message d'erreur :
######################################
File "test.py", line 3, in <module>
obFichier = open('MonFichier.txt','a')
TypeError: an integer is required
######################################
1) Pourquoi ce code ne marche pas ?
2) Les fonctions open, write etc. font-elles bien partie du module os ?
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
Franssoa
Bonjour à tous,
Je suis sur Ubuntu et je débute vraiment en Python. J'ai un problème avec ce code
###################################### from os import * obFichier = open('MonFichier.txt','w') ###################################### File "test.py", line 3, in <module> obFichier = open('MonFichier.txt','a') TypeError: an integer is required ###################################### 1) Pourquoi ce code ne marche pas ? 2) Les fonctions open, write etc. font-elles bien partie du module os ?
Le os.open prend comme paramètre open( file, flags[, mode]) En faisant un "from os import * " tu écrase la fonction open native de python qui ne prend pas le paramètre 'flag'
Donc, ici, ton "from os import *" est inutile, et d'une manière générale, il vaut mieux écrire :
import os obFichier = os.open("MonFichier.txt",777)
que from os import * obFichier = open("MonFichier.txt",0777,"w")
comme ça tu n'a pas le risque d'écraser (le nom) d'autres fonctions existantes. -- Franssoa
Bonjour à tous,
Je suis sur Ubuntu et je débute vraiment en Python. J'ai un problème
avec ce code
######################################
from os import *
obFichier = open('MonFichier.txt','w')
######################################
File "test.py", line 3, in <module>
obFichier = open('MonFichier.txt','a')
TypeError: an integer is required
######################################
1) Pourquoi ce code ne marche pas ?
2) Les fonctions open, write etc. font-elles bien partie du module os ?
Le os.open prend comme paramètre open( file, flags[, mode])
En faisant un "from os import * " tu écrase la fonction open native de
python qui ne prend pas le paramètre 'flag'
Donc, ici, ton "from os import *" est inutile, et d'une manière
générale, il vaut mieux écrire :
import os
obFichier = os.open("MonFichier.txt",777)
que
from os import *
obFichier = open("MonFichier.txt",0777,"w")
comme ça tu n'a pas le risque d'écraser (le nom) d'autres fonctions
existantes.
--
Franssoa
Je suis sur Ubuntu et je débute vraiment en Python. J'ai un problème avec ce code
###################################### from os import * obFichier = open('MonFichier.txt','w') ###################################### File "test.py", line 3, in <module> obFichier = open('MonFichier.txt','a') TypeError: an integer is required ###################################### 1) Pourquoi ce code ne marche pas ? 2) Les fonctions open, write etc. font-elles bien partie du module os ?
Le os.open prend comme paramètre open( file, flags[, mode]) En faisant un "from os import * " tu écrase la fonction open native de python qui ne prend pas le paramètre 'flag'
Donc, ici, ton "from os import *" est inutile, et d'une manière générale, il vaut mieux écrire :
import os obFichier = os.open("MonFichier.txt",777)
que from os import * obFichier = open("MonFichier.txt",0777,"w")
comme ça tu n'a pas le risque d'écraser (le nom) d'autres fonctions existantes. -- Franssoa
Boa Guy Serge
On 14 mar, 14:14, Francois wrote:
Bonjour à tous,
Je suis sur Ubuntu et je débute vraiment en Python. J'ai un problème avec ce code
###################################### from os import *
obFichier = open('MonFichier.txt','w') obFichier.write('Salut tout le monde !!!') obFichier.close() print 'nC'est fini merci !n' ######################################
qui est censé créer le fichier MonFichier.txt (s'il n'existe pas déj à) et écrire dessus. J'ai ce message d'erreur :
###################################### File "test.py", line 3, in <module> obFichier = open('MonFichier.txt','a') TypeError: an integer is required ######################################
1) Pourquoi ce code ne marche pas ?
2) Les fonctions open, write etc. font-elles bien partie du module os ?
Merci d'avance.
François
il faut importer Tkinter comme suit:
from Tkinter import * obFichier = open('Monfichier', 'w') obFichier.write('salut tout le monde !!!') obFichier.close() ok bonne journée bon codage
On 14 mar, 14:14, Francois <mathsatta...@free.fr> wrote:
Bonjour à tous,
Je suis sur Ubuntu et je débute vraiment en Python. J'ai un problème
avec ce code
######################################
from os import *
obFichier = open('MonFichier.txt','w')
obFichier.write('Salut tout le monde !!!')
obFichier.close()
print 'nC'est fini merci !n'
######################################
qui est censé créer le fichier MonFichier.txt (s'il n'existe pas déj à)
et écrire dessus. J'ai ce message d'erreur :
######################################
File "test.py", line 3, in <module>
obFichier = open('MonFichier.txt','a')
TypeError: an integer is required
######################################
1) Pourquoi ce code ne marche pas ?
2) Les fonctions open, write etc. font-elles bien partie du module os ?
Merci d'avance.
François
il faut importer Tkinter comme suit:
from Tkinter import *
obFichier = open('Monfichier', 'w')
obFichier.write('salut tout le monde !!!')
obFichier.close()
ok bonne journée bon codage
Je suis sur Ubuntu et je débute vraiment en Python. J'ai un problème avec ce code
###################################### from os import *
obFichier = open('MonFichier.txt','w') obFichier.write('Salut tout le monde !!!') obFichier.close() print 'nC'est fini merci !n' ######################################
qui est censé créer le fichier MonFichier.txt (s'il n'existe pas déj à) et écrire dessus. J'ai ce message d'erreur :
###################################### File "test.py", line 3, in <module> obFichier = open('MonFichier.txt','a') TypeError: an integer is required ######################################
1) Pourquoi ce code ne marche pas ?
2) Les fonctions open, write etc. font-elles bien partie du module os ?
Merci d'avance.
François
il faut importer Tkinter comme suit:
from Tkinter import * obFichier = open('Monfichier', 'w') obFichier.write('salut tout le monde !!!') obFichier.close() ok bonne journée bon codage
Francois
Ok, merci beaucoup. Les choses sont claires.
open() fait déjà partie du noyau Python (pas besoin de faire appel à un module) et le module os, que j'ai appelé de manière pas très prudente, en a modifié la définition.
J'ai alors juste une petite question (moins importante). Si la fonction open() fait directement partie du noyau Python, pourquoi ne fait-elle pas partie des "mots clés" réservés au langage ? En tout cas à en croire un livre que j'ai ("apprendre à programmer avec Python"), il y a 28 "mots clés" : and, assert ... Mais pas open ?
François
Ok, merci beaucoup. Les choses sont claires.
open() fait déjà partie du noyau Python (pas besoin de faire appel à un
module) et le module os, que j'ai appelé de manière pas très prudente,
en a modifié la définition.
J'ai alors juste une petite question (moins importante). Si la fonction
open() fait directement partie du noyau Python, pourquoi ne fait-elle
pas partie des "mots clés" réservés au langage ? En tout cas à en croire
un livre que j'ai ("apprendre à programmer avec Python"), il y a 28
"mots clés" : and, assert ... Mais pas open ?
open() fait déjà partie du noyau Python (pas besoin de faire appel à un module) et le module os, que j'ai appelé de manière pas très prudente, en a modifié la définition.
J'ai alors juste une petite question (moins importante). Si la fonction open() fait directement partie du noyau Python, pourquoi ne fait-elle pas partie des "mots clés" réservés au langage ? En tout cas à en croire un livre que j'ai ("apprendre à programmer avec Python"), il y a 28 "mots clés" : and, assert ... Mais pas open ?
François
Guillaume
Ok, merci beaucoup. Les choses sont claires.
open() fait déjà partie du noyau Python (pas besoin de faire appel à un module) et le module os, que j'ai appelé de manière pas très prudente, en a modifié la définition.
J'ai alors juste une petite question (moins importante). Si la fonction open() fait directement partie du noyau Python, pourquoi ne fait-elle pas partie des "mots clés" réservés au langage ? En tout cas à en croire un livre que j'ai ("apprendre à programmer avec Python"), il y a 28 "mots clés" : and, assert ... Mais pas open ?
François
Une fonction ne peut pas être un mot-clé puisqu'il faut laisser la possibilité d'encapsuler cette fonction, pour modifier son comportement ou lui adjoindre de nouvelles fonctionnalités.
Cordialement, -- Guillaume
Ok, merci beaucoup. Les choses sont claires.
open() fait déjà partie du noyau Python (pas besoin de faire appel à un
module) et le module os, que j'ai appelé de manière pas très prudente,
en a modifié la définition.
J'ai alors juste une petite question (moins importante). Si la fonction
open() fait directement partie du noyau Python, pourquoi ne fait-elle
pas partie des "mots clés" réservés au langage ? En tout cas à en croire
un livre que j'ai ("apprendre à programmer avec Python"), il y a 28
"mots clés" : and, assert ... Mais pas open ?
François
Une fonction ne peut pas être un mot-clé puisqu'il faut laisser la
possibilité d'encapsuler cette fonction, pour modifier son comportement
ou lui adjoindre de nouvelles fonctionnalités.
open() fait déjà partie du noyau Python (pas besoin de faire appel à un module) et le module os, que j'ai appelé de manière pas très prudente, en a modifié la définition.
J'ai alors juste une petite question (moins importante). Si la fonction open() fait directement partie du noyau Python, pourquoi ne fait-elle pas partie des "mots clés" réservés au langage ? En tout cas à en croire un livre que j'ai ("apprendre à programmer avec Python"), il y a 28 "mots clés" : and, assert ... Mais pas open ?
François
Une fonction ne peut pas être un mot-clé puisqu'il faut laisser la possibilité d'encapsuler cette fonction, pour modifier son comportement ou lui adjoindre de nouvelles fonctionnalités.
Cordialement, -- Guillaume
Francois
Une fonction ne peut pas être un mot-clé puisqu'il faut laisser la possibilité d'encapsuler cette fonction, pour modifier son comportement ou lui adjoindre de nouvelles fonctionnalités.
D'accord, merci.
Mais par exemple, print n'est pas une fonction ? En tout cas c'est un mot clé.
Désolé pour cette question un peu bête. :-)
François
Une fonction ne peut pas être un mot-clé puisqu'il faut laisser la
possibilité d'encapsuler cette fonction, pour modifier son comportement
ou lui adjoindre de nouvelles fonctionnalités.
D'accord, merci.
Mais par exemple, print n'est pas une fonction ? En tout cas c'est un
mot clé.
Une fonction ne peut pas être un mot-clé puisqu'il faut laisser la possibilité d'encapsuler cette fonction, pour modifier son comportement ou lui adjoindre de nouvelles fonctionnalités.
D'accord, merci.
Mais par exemple, print n'est pas une fonction ? En tout cas c'est un mot clé.
Désolé pour cette question un peu bête. :-)
François
Eric Brunel
On Fri, 14 Mar 2008 17:30:07 +0100, Francois wrote:
Une fonction ne peut pas être un mot-clé puisqu'il faut laisser la possibilité d'encapsuler cette fonction, pour modifier son comportement ou lui adjoindre de nouvelles fonctionnalités.
D'accord, merci.
Mais par exemple, print n'est pas une fonction ? En tout cas c'est un mot clé.
Désolé pour cette question un peu bête. :-)
La question n'est pas bête du tout en fait: 'print' était effectivement un mot-clef en Python 1.x et 2.x. Cela a été considéré comme un problème et va être modifié en Python 3.0, dans lequel 'print' va devenir une fonction, et ne sera donc plus un mot-clef. -- python -c "print ''.join([chr(154 - ord(c)) for c in 'U(17zX(%,5.zmz5(17l8(%,5.Z*(93-965$l7+-'])"
On Fri, 14 Mar 2008 17:30:07 +0100, Francois <mathsattacks@free.fr> wrote:
Une fonction ne peut pas être un mot-clé puisqu'il faut laisser la
possibilité d'encapsuler cette fonction, pour modifier son comportement
ou lui adjoindre de nouvelles fonctionnalités.
D'accord, merci.
Mais par exemple, print n'est pas une fonction ? En tout cas c'est un
mot clé.
Désolé pour cette question un peu bête. :-)
La question n'est pas bête du tout en fait: 'print' était effectivement un
mot-clef en Python 1.x et 2.x. Cela a été considéré comme un problème et
va être modifié en Python 3.0, dans lequel 'print' va devenir une
fonction, et ne sera donc plus un mot-clef.
--
python -c "print ''.join([chr(154 - ord(c)) for c in
'U(17zX(%,5.zmz5(17l8(%,5.Z*(93-965$l7+-'])"
On Fri, 14 Mar 2008 17:30:07 +0100, Francois wrote:
Une fonction ne peut pas être un mot-clé puisqu'il faut laisser la possibilité d'encapsuler cette fonction, pour modifier son comportement ou lui adjoindre de nouvelles fonctionnalités.
D'accord, merci.
Mais par exemple, print n'est pas une fonction ? En tout cas c'est un mot clé.
Désolé pour cette question un peu bête. :-)
La question n'est pas bête du tout en fait: 'print' était effectivement un mot-clef en Python 1.x et 2.x. Cela a été considéré comme un problème et va être modifié en Python 3.0, dans lequel 'print' va devenir une fonction, et ne sera donc plus un mot-clef. -- python -c "print ''.join([chr(154 - ord(c)) for c in 'U(17zX(%,5.zmz5(17l8(%,5.Z*(93-965$l7+-'])"
Francois
La question n'est pas bête du tout en fait: 'print' était effectivement un mot-clef en Python 1.x et 2.x. Cela a été considéré comme un problème et va être modifié en Python 3.0, dans lequel 'print' va devenir une fonction, et ne sera donc plus un mot-clef.
OK, merci c'est très clair. Mais encore une fois, une réponse appelle une autre question.
1) Comment fait-on pour connaître sa version de Python ? 2) Cela voudra donc dire que pour la version future version 3.0, il faudra écrire print() au lieu de print (tout court). Si c'est le cas, bonjour les problèmes de compatibilité avec les programmes tapés pour les versions 1.x et 2.x ?
François
La question n'est pas bête du tout en fait: 'print' était effectivement
un mot-clef en Python 1.x et 2.x. Cela a été considéré comme un problème
et va être modifié en Python 3.0, dans lequel 'print' va devenir une
fonction, et ne sera donc plus un mot-clef.
OK, merci c'est très clair. Mais encore une fois, une réponse appelle
une autre question.
1) Comment fait-on pour connaître sa version de Python ?
2) Cela voudra donc dire que pour la version future version 3.0, il
faudra écrire print() au lieu de print (tout court). Si c'est le cas,
bonjour les problèmes de compatibilité avec les programmes tapés pour
les versions 1.x et 2.x ?
La question n'est pas bête du tout en fait: 'print' était effectivement un mot-clef en Python 1.x et 2.x. Cela a été considéré comme un problème et va être modifié en Python 3.0, dans lequel 'print' va devenir une fonction, et ne sera donc plus un mot-clef.
OK, merci c'est très clair. Mais encore une fois, une réponse appelle une autre question.
1) Comment fait-on pour connaître sa version de Python ? 2) Cela voudra donc dire que pour la version future version 3.0, il faudra écrire print() au lieu de print (tout court). Si c'est le cas, bonjour les problèmes de compatibilité avec les programmes tapés pour les versions 1.x et 2.x ?
François
Avell Diroll
Francois wrote: (snip)
1) Comment fait-on pour connaître sa version de Python ?
python -V (à la ligne de commande)
2) Cela voudra donc dire que pour la version future version 3.0, il faudra écrire print() au lieu de print (tout court). Si c'est le cas, bonjour les problèmes de compatibilité avec les programmes tapés pour les versions 1.x et 2.x ?
C'est pour cela que les changements de version majeurs (indentation du premier chiffre) désignent pour la plupart des logiciels des modifications incompatibles avec les versions précédentes. Pour information, les changements de version mineur (le second nombre) désigne des améliorations du logiciels tout en restant compatibles, et les changements ultra-mineur (le 3e nombre) signalent des corrections de bugs. Ce ne sont pas des règles absolues, mais elle sont très suivies.
C'est pour cela que la série des python 2.x devrait continuer après la sortie de python 3.0 (au moins jusqu'au 2.7 si je me souviens bien), et que python 3.0 sera accompagné d'outils de traduction automatique de code 2.X vers code 3.X.
Bonne continuation
Ju -- Getting the job done is no excuse for not following the rules.
Corollary: Following the rules will not get the job done.
Francois wrote:
(snip)
1) Comment fait-on pour connaître sa version de Python ?
python -V
(à la ligne de commande)
2) Cela voudra donc dire que pour la version future version 3.0, il
faudra écrire print() au lieu de print (tout court). Si c'est le cas,
bonjour les problèmes de compatibilité avec les programmes tapés pour
les versions 1.x et 2.x ?
C'est pour cela que les changements de version majeurs (indentation du
premier chiffre) désignent pour la plupart des logiciels des
modifications incompatibles avec les versions précédentes.
Pour information, les changements de version mineur (le second nombre)
désigne des améliorations du logiciels tout en restant compatibles, et
les changements ultra-mineur (le 3e nombre) signalent des corrections de
bugs. Ce ne sont pas des règles absolues, mais elle sont très suivies.
C'est pour cela que la série des python 2.x devrait continuer après la
sortie de python 3.0 (au moins jusqu'au 2.7 si je me souviens bien), et
que python 3.0 sera accompagné d'outils de traduction automatique de
code 2.X vers code 3.X.
Bonne continuation
Ju
--
Getting the job done is no excuse for not following the rules.
Corollary:
Following the rules will not get the job done.
1) Comment fait-on pour connaître sa version de Python ?
python -V (à la ligne de commande)
2) Cela voudra donc dire que pour la version future version 3.0, il faudra écrire print() au lieu de print (tout court). Si c'est le cas, bonjour les problèmes de compatibilité avec les programmes tapés pour les versions 1.x et 2.x ?
C'est pour cela que les changements de version majeurs (indentation du premier chiffre) désignent pour la plupart des logiciels des modifications incompatibles avec les versions précédentes. Pour information, les changements de version mineur (le second nombre) désigne des améliorations du logiciels tout en restant compatibles, et les changements ultra-mineur (le 3e nombre) signalent des corrections de bugs. Ce ne sont pas des règles absolues, mais elle sont très suivies.
C'est pour cela que la série des python 2.x devrait continuer après la sortie de python 3.0 (au moins jusqu'au 2.7 si je me souviens bien), et que python 3.0 sera accompagné d'outils de traduction automatique de code 2.X vers code 3.X.
Bonne continuation
Ju -- Getting the job done is no excuse for not following the rules.
Corollary: Following the rules will not get the job done.
Mihamina Rakotomandimby
Ce ne sont pas des règles absolues, mais elle sont très suivies.
Je voulais juste appuyer ce point: ce n'est suivi que par certains. Par (contre) exemple, chez Ubuntu, Gentoo,... et les milliers de "petits" logiciels (genre xcdroast) qui font expres de rester en 0.99xxx ;-)
-- Huile Essentielle de Camphre http://www.huile-camphre.fr Infogerance http://www.infogerance.us (Serveurs, Postes de travail, Développement logiciel)
Ce ne sont pas des règles absolues, mais elle sont très suivies.
Je voulais juste appuyer ce point: ce n'est suivi que par certains.
Par (contre) exemple, chez Ubuntu, Gentoo,... et les milliers de
"petits" logiciels (genre xcdroast) qui font expres de rester en
0.99xxx ;-)
--
Huile Essentielle de Camphre http://www.huile-camphre.fr
Infogerance http://www.infogerance.us
(Serveurs, Postes de travail, Développement logiciel)
Ce ne sont pas des règles absolues, mais elle sont très suivies.
Je voulais juste appuyer ce point: ce n'est suivi que par certains. Par (contre) exemple, chez Ubuntu, Gentoo,... et les milliers de "petits" logiciels (genre xcdroast) qui font expres de rester en 0.99xxx ;-)
-- Huile Essentielle de Camphre http://www.huile-camphre.fr Infogerance http://www.infogerance.us (Serveurs, Postes de travail, Développement logiciel)
Francois
1) Comment fait-on pour connaître sa version de Python ?
python -V (à la ligne de commande)
Oops, en ligne de commande du terminal bien sûr. J'avais testé sur l'interpréteur de commandes Python que je suis bête.
2) Cela voudra donc dire que pour la version future version 3.0, il faudra écrire print() au lieu de print (tout court). Si c'est le cas, bonjour les problèmes de compatibilité avec les programmes tapés pour les versions 1.x et 2.x ?
C'est pour cela que les changements de version majeurs (indentation du premier chiffre) désignent pour la plupart des logiciels des modifications incompatibles avec les versions précédentes ...
Merci beaucoup ! J'ai appris quelque chose. Dire que ce genre de chiffres, je les voyais un peu partout sans jamais savoir qu'il y avait une logique là-dessous. Logique pas systématiquement respectée si j'ai bien compris.
J'ai l'impression que c'est toujours un peu antagoniste de faire évoluer un langage d'un côté et de conserver la compatibilité de l'autre.
Merci beaucoup
François
1) Comment fait-on pour connaître sa version de Python ?
python -V
(à la ligne de commande)
Oops, en ligne de commande du terminal bien sûr. J'avais testé sur
l'interpréteur de commandes Python que je suis bête.
2) Cela voudra donc dire que pour la version future version 3.0, il
faudra écrire print() au lieu de print (tout court). Si c'est le cas,
bonjour les problèmes de compatibilité avec les programmes tapés pour
les versions 1.x et 2.x ?
C'est pour cela que les changements de version majeurs (indentation du
premier chiffre) désignent pour la plupart des logiciels des
modifications incompatibles avec les versions précédentes ...
Merci beaucoup !
J'ai appris quelque chose. Dire que ce genre de chiffres, je les voyais
un peu partout sans jamais savoir qu'il y avait une logique là-dessous.
Logique pas systématiquement respectée si j'ai bien compris.
J'ai l'impression que c'est toujours un peu antagoniste de faire évoluer
un langage d'un côté et de conserver la compatibilité de l'autre.
1) Comment fait-on pour connaître sa version de Python ?
python -V (à la ligne de commande)
Oops, en ligne de commande du terminal bien sûr. J'avais testé sur l'interpréteur de commandes Python que je suis bête.
2) Cela voudra donc dire que pour la version future version 3.0, il faudra écrire print() au lieu de print (tout court). Si c'est le cas, bonjour les problèmes de compatibilité avec les programmes tapés pour les versions 1.x et 2.x ?
C'est pour cela que les changements de version majeurs (indentation du premier chiffre) désignent pour la plupart des logiciels des modifications incompatibles avec les versions précédentes ...
Merci beaucoup ! J'ai appris quelque chose. Dire que ce genre de chiffres, je les voyais un peu partout sans jamais savoir qu'il y avait une logique là-dessous. Logique pas systématiquement respectée si j'ai bien compris.
J'ai l'impression que c'est toujours un peu antagoniste de faire évoluer un langage d'un côté et de conserver la compatibilité de l'autre.