[python] module os et fonction open()
Fermé
bbakeroo
Messages postés
2197
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
10 juin 2007
-
5 oct. 2004 à 11:35
Tufanik - 27 janv. 2010 à 20:30
Tufanik - 27 janv. 2010 à 20:30
A voir également:
- Python with os.open
- Citizen code python avis - Accueil - Outils
- Python generator - Télécharger - Sécurité
- Python est introuvable. exúcutez sans argument pour procúder ó l ✓ - Forum Python
- Mot secret python pix ✓ - Forum Python
18 réponses
teebo
Messages postés
33491
Date d'inscription
jeudi 14 octobre 2004
Statut
Modérateur
Dernière intervention
24 février 2011
1 793
5 oct. 2004 à 12:11
5 oct. 2004 à 12:11
Salut...
open( file, flags[, mode])
Open the file file and set various flags according to flags and possibly its mode according to mode. The default mode is 0777 (octal), and the current umask value is first masked out. Return the file descriptor for the newly opened file. Availability: Macintosh, Unix, Windows.
For a description of the flag and mode values, see the C run-time documentation; flag constants (like O_RDONLY and O_WRONLY) are defined in this module too (see below).
Note: this function is intended for low-level I/O. For normal usage, use the built-in function open(), which returns a ``file object'' with read() and write() methods (and many more).
*,* Ce post a été écrit entièrement *,*
\_/ avec des molécules recyclées \_/
open( file, flags[, mode])
Open the file file and set various flags according to flags and possibly its mode according to mode. The default mode is 0777 (octal), and the current umask value is first masked out. Return the file descriptor for the newly opened file. Availability: Macintosh, Unix, Windows.
For a description of the flag and mode values, see the C run-time documentation; flag constants (like O_RDONLY and O_WRONLY) are defined in this module too (see below).
Note: this function is intended for low-level I/O. For normal usage, use the built-in function open(), which returns a ``file object'' with read() and write() methods (and many more).
*,* Ce post a été écrit entièrement *,*
\_/ avec des molécules recyclées \_/
teebo
Messages postés
33491
Date d'inscription
jeudi 14 octobre 2004
Statut
Modérateur
Dernière intervention
24 février 2011
1 793
5 oct. 2004 à 12:11
5 oct. 2004 à 12:11
Mais il semblerait qu'il faille plusieurs arguments...
Bizzare cette histoire...
*,* Ce post a été écrit entièrement *,*
\_/ avec des molécules recyclées \_/
Bizzare cette histoire...
*,* Ce post a été écrit entièrement *,*
\_/ avec des molécules recyclées \_/
teebo
Messages postés
33491
Date d'inscription
jeudi 14 octobre 2004
Statut
Modérateur
Dernière intervention
24 février 2011
1 793
5 oct. 2004 à 12:14
5 oct. 2004 à 12:14
Moi j'ai la meme erreur avec ou sans OS...
*,* Ce post a été écrit entièrement *,*
\_/ avec des molécules recyclées \_/
*,* Ce post a été écrit entièrement *,*
\_/ avec des molécules recyclées \_/
teebo
Messages postés
33491
Date d'inscription
jeudi 14 octobre 2004
Statut
Modérateur
Dernière intervention
24 février 2011
1 793
5 oct. 2004 à 12:19
5 oct. 2004 à 12:19
Essaye file() a la place de open...
*,* Ce post a été écrit entièrement *,*
\_/ avec des molécules recyclées \_/
*,* Ce post a été écrit entièrement *,*
\_/ avec des molécules recyclées \_/
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
kilian
Messages postés
8732
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
5 février 2025
1 526
5 oct. 2004 à 13:03
5 oct. 2004 à 13:03
Tiens ça fait la même chose chez moi (si j'importe os par cette methode).
Par contre si tu tapes
import os
#au lieu de
from os import *
...tu n'auras plus ce problème
Par contre si tu tapes
import os
#au lieu de
from os import *
...tu n'auras plus ce problème
Kilian, débutant en tâche de fond.....
bbakeroo
Messages postés
2197
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
10 juin 2007
71
6 oct. 2004 à 09:08
6 oct. 2004 à 09:08
Bonjour,
Merci killian, effectivement import os permet de garder la fonction open() habituelle.
Le module os doit contenir un code qui modifie les argument de cette fonction.
quelle est la différence entre
from os import *
et
import os
?
111 111 111 x 111 111 111 = 12345678987654321
Merci killian, effectivement import os permet de garder la fonction open() habituelle.
Le module os doit contenir un code qui modifie les argument de cette fonction.
quelle est la différence entre
from os import *
et
import os
?
111 111 111 x 111 111 111 = 12345678987654321
kilian
Messages postés
8732
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
5 février 2025
1 526
6 oct. 2004 à 13:52
6 oct. 2004 à 13:52
Ah ça je ne saurais pas te dire. A mon avis c'est la même chose, c'est juste que l'import de module par "from machin import qqchose" permet de ne selectionner qu'une partie d'un module (ou tout avec l'asterisque).
C'est pour ça que cette histoire me parait plus être un bug qu'une reaction normale de l'interpreteur. Mais c'est peut être moi qui me trompe, peut être ya t'il une différence entre ces deux façons d'importer....
C'est pour ça que cette histoire me parait plus être un bug qu'une reaction normale de l'interpreteur. Mais c'est peut être moi qui me trompe, peut être ya t'il une différence entre ces deux façons d'importer....
Kilian, débutant en tâche de fond.....
Bonjour,
et ca continue .....
si je test les deux méthodes d'importation du module os j'arrive à :
from os import *
def where():
crep = getcwd()
print crep
return
where()
nrep = raw_input("path ?")
chdir(nrep)
where()
la tout va bien la fonction getcwd() est bien loadée
par contre avec:
import os
def where():
crep = getcwd()
print crep
return
where()
nrep = raw_input("path ?")
chdir(nrep)
where()
la message :
File "U:\pythonscript\testos.py", line 3, in where
crep = getcwd()
NameError: global name 'getcwd' is not defined
pour être plus explicite ce script ne fait que changer le repertoire courant avec les fonctions de getcwd (get current working directory) et chdir (change directory).
crep = curent
nrep = new
on demande à python d'afficher la modification.
en conclusion il existe bien une différence notoire d'importation du module os puisqu'avec imort os certaine(s) fonction(s) sont ignorée(s).
ce qui ramène à la méthode : from os import * qui implique le problème d'ouverture de fichier sur la fonction open() (voir les post plus hauts).
HELP
et ca continue .....
si je test les deux méthodes d'importation du module os j'arrive à :
from os import *
def where():
crep = getcwd()
print crep
return
where()
nrep = raw_input("path ?")
chdir(nrep)
where()
la tout va bien la fonction getcwd() est bien loadée
par contre avec:
import os
def where():
crep = getcwd()
print crep
return
where()
nrep = raw_input("path ?")
chdir(nrep)
where()
la message :
File "U:\pythonscript\testos.py", line 3, in where
crep = getcwd()
NameError: global name 'getcwd' is not defined
pour être plus explicite ce script ne fait que changer le repertoire courant avec les fonctions de getcwd (get current working directory) et chdir (change directory).
crep = curent
nrep = new
on demande à python d'afficher la modification.
en conclusion il existe bien une différence notoire d'importation du module os puisqu'avec imort os certaine(s) fonction(s) sont ignorée(s).
ce qui ramène à la méthode : from os import * qui implique le problème d'ouverture de fichier sur la fonction open() (voir les post plus hauts).
HELP
bbakeroo
Messages postés
2197
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
10 juin 2007
71
8 oct. 2004 à 15:28
8 oct. 2004 à 15:28
heuuu personne ?
même pas sebsauvage ?
j'en profite pour inscrire une doléance en ce qui concerne ce langage trop peu représenté sur ccm (c'est dit).
111 111 111 x 111 111 111 = 12345678987654321
même pas sebsauvage ?
j'en profite pour inscrire une doléance en ce qui concerne ce langage trop peu représenté sur ccm (c'est dit).
111 111 111 x 111 111 111 = 12345678987654321
teebo
Messages postés
33491
Date d'inscription
jeudi 14 octobre 2004
Statut
Modérateur
Dernière intervention
24 février 2011
1 793
8 oct. 2004 à 15:30
8 oct. 2004 à 15:30
Tu as essaye file() ?
Je suis tetu :o)
sinon sous represente malheureusement pas seulement sur CCM...
*,* Ce post a été écrit entièrement *,*
\_/ avec des molécules recyclées \_/
Je suis tetu :o)
sinon sous represente malheureusement pas seulement sur CCM...
*,* Ce post a été écrit entièrement *,*
\_/ avec des molécules recyclées \_/
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 662
8 oct. 2004 à 15:33
8 oct. 2004 à 15:33
import toto
et
from toto import *
on un comportement très différent.
Je n'aime pas le "from toto import *", car cela permet d'appeler des fonctions dans préciser explicitement dans quel module on les appelle.
Python va donc aller prendre la première méthode open() trouvée parmis les modules importées.
C'est dangereux.
(Typiquement, open() pourrait exister sur un objet fichier, socket, url, image, etc... )
Et comme "Explicit is better than implicit", il faut mieux utiliser "import toto".
http://python.org/doc/faq/programming.html#what-are-the-best-practices-for-using-import-in-a-module
Mais de toute façon, la méthode open() fait partie du noyau de Python, pas besoin d'importer un module pour l'utiliser.
et
from toto import *
on un comportement très différent.
Je n'aime pas le "from toto import *", car cela permet d'appeler des fonctions dans préciser explicitement dans quel module on les appelle.
Python va donc aller prendre la première méthode open() trouvée parmis les modules importées.
C'est dangereux.
(Typiquement, open() pourrait exister sur un objet fichier, socket, url, image, etc... )
Et comme "Explicit is better than implicit", il faut mieux utiliser "import toto".
http://python.org/doc/faq/programming.html#what-are-the-best-practices-for-using-import-in-a-module
Mais de toute façon, la méthode open() fait partie du noyau de Python, pas besoin d'importer un module pour l'utiliser.
teebo
Messages postés
33491
Date d'inscription
jeudi 14 octobre 2004
Statut
Modérateur
Dernière intervention
24 février 2011
1 793
8 oct. 2004 à 15:35
8 oct. 2004 à 15:35
http://tinyurl.com/6e5q9
Merde grille :o)
*,* Ce post a été écrit entièrement *,*
\_/ avec des molécules recyclées \_/
Merde grille :o)
*,* Ce post a été écrit entièrement *,*
\_/ avec des molécules recyclées \_/
bbakeroo
Messages postés
2197
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
10 juin 2007
71
8 oct. 2004 à 15:44
8 oct. 2004 à 15:44
salut sebsauvage,
oui pour la fonction open(), livré en standard
mais getcwd, chdir ..... c'est pratique avant un open() non ?
ceci dit je creuse le site officiel
merci
111 111 111 x 111 111 111 = 12345678987654321
oui pour la fonction open(), livré en standard
mais getcwd, chdir ..... c'est pratique avant un open() non ?
ceci dit je creuse le site officiel
merci
111 111 111 x 111 111 111 = 12345678987654321
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 662
8 oct. 2004 à 16:23
8 oct. 2004 à 16:23
oui mais dans ce cas, il vaut mieux utiliser "import" que "from x import *".
Ensuite il faut préfixer chaque appel de méthode par le nom du module:
os.getcwd()
L'avantage de cette méthode, c'est qu'en relisant un source, en voyant le nom d'une méthode tu n'aura pas à te demander quel module ou objet il est en train d'appeler.
Ensuite il faut préfixer chaque appel de méthode par le nom du module:
os.getcwd()
L'avantage de cette méthode, c'est qu'en relisant un source, en voyant le nom d'une méthode tu n'aura pas à te demander quel module ou objet il est en train d'appeler.
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 662
8 oct. 2004 à 16:31
8 oct. 2004 à 16:31
Donc il ne faut PAS faire:
mais il faut faire:
from os import * toto = getcwd()
mais il faut faire:
import os toto = os.getcwd()
bbakeroo
Messages postés
2197
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
10 juin 2007
71
18 oct. 2004 à 13:49
18 oct. 2004 à 13:49
bonjour,
vouuuiii, ca marche !!! lol
bon je sais c'est du code de base, mais bon je réattaque la partie developpement et j'ai choi le python, donc je risque de réapparaitre souvent sur ce chapitre.
merci a vous trois
a+
111 111 111 x 111 111 111 = 12345678987654321
vouuuiii, ca marche !!! lol
bon je sais c'est du code de base, mais bon je réattaque la partie developpement et j'ai choi le python, donc je risque de réapparaitre souvent sur ce chapitre.
merci a vous trois
a+
111 111 111 x 111 111 111 = 12345678987654321
salut
g eu le meme probleme et j'ai finalement compris :
python contient des la base une fonction open() qui est souvent utiliser :
(move(filename,mode)). cependant dans le module os il existe une autre fonction open qui marche diferament (elle demande un integer) donc en faisant from os import * , tu importe tte les fonction de os ce qui a pour effet d'ecraser la fonction open habituel. avec import os (plus conseiller) tu import os comme une classe se qui permet de pas ecraser la fonction open de debut.
j'espere que c'etait clair ^^
g eu le meme probleme et j'ai finalement compris :
python contient des la base une fonction open() qui est souvent utiliser :
(move(filename,mode)). cependant dans le module os il existe une autre fonction open qui marche diferament (elle demande un integer) donc en faisant from os import * , tu importe tte les fonction de os ce qui a pour effet d'ecraser la fonction open habituel. avec import os (plus conseiller) tu import os comme une classe se qui permet de pas ecraser la fonction open de debut.
j'espere que c'etait clair ^^
Heps,
Bon, il y a plusieurs moyens pour éviter ce problème.
1) Comme dis précédemment : utiliser os import plutôt que from os import *
2) Taper l'encoding après le mode : file=open('monfichier.txt,mode='r',encoding=un nombre)
3) Utiliser le module io, qui marche tout aussi bien.
Voilà
@+
Bon, il y a plusieurs moyens pour éviter ce problème.
1) Comme dis précédemment : utiliser os import plutôt que from os import *
2) Taper l'encoding après le mode : file=open('monfichier.txt,mode='r',encoding=un nombre)
3) Utiliser le module io, qui marche tout aussi bien.
Voilà
@+