Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

C'est quoi qui merde comme ça avec les fichiers ?

+2 votes

Soit le code suivant :

mon_fichier = open('C:/texte.txt','w') # je sais je devrais utiliser *with*, mais bon
mon_fichier.write('Du texte')
mon_fichier.close()

1- Pourquoi write() me renvoie dans l'interpréteur la longueur de la chaîne ?
2- Pourquoi ledit fichier texte.txt, qui devrait être créé car il n'existe pas, n'apparaît pas à la racine de mon DD ?

demandé 3-Nov-2015 par Askeridos (130 points)

2 Réponses

+4 votes
 
Meilleure réponse

juste pour completer bobinux:
mauvaise idee, d'ecrire directement a la racine sous un windows 7 et plus recent. il te manque des droits.
sous windows 10/python 3.5:

>> mon_fichier = open('C:/texte.txt','w')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  PermissionError: [Errno 13] Permission denied: 'C:/texte.txt'
>> mon_fichier = open('C:/Users/ashgan/texte.txt','w')
>> mon_fichier.write('Du texte')
8
>> mon_fichier.close()
répondu 4-Nov-2015 par ashgan (698 points)
sélectionné 4-Nov-2015 par Askeridos

C'est la même sous linux, si tu essayes d'écrire à la racine, par défaut t'auras pas les droits nécessaires.

c'est vrai, mais contrairement a linux, c'etait pas le cas jusqu'a win XP, ca peut preter a confusion.
les mauvaise habitudes, tout ca...

+5 votes

2- Pourquoi ledit fichier texte.txt, qui devrait être créé car il
n'existe pas, n'apparaît pas à la racine de mon DD

Hum, chez moi il existe sous linux, avec python3, test :

>>> mon_fichier = open('/home/boblinux/texte.txt','w') # je sais je devrais utiliser *with*, mais bon
>>> mon_fichier.write('Du texte')
8
>>> mon_fichier.close()

ensuite je l'affiche avec la commande cat depuis le terminal :

[boblinux@bobpc ~]$ cat texte.txt 
Du texte

Peut-être que tu ne cherches pas où il faudrait, ou bien tu n'as peut-être pas les droits necessaires pour écrire à cet endroit depuis ton programme, essaye un dossier courant plus précis.

1- Pourquoi write() me renvoie dans l'interpréteur la longueur de la
chaîne ?

Parce que les mec qui ont developpé cette fonctionnalité l'ont décidé ainsi ;P

**ps ** : Pour plus d'infos sur les manips de fichiers en python ça se passe par

répondu 3-Nov-2015 par boblinux (3,092 points)

Merci, je vais indiquer un dossier plus précis.

Par contre, je viens de remarquer un truc : sous la version 3.5, je fais un chdir() mais il n'est pas pris en compte quand je ferme et ouvre de nouveau Idle avec os.getcwd(). Comment ça se fait ?

Je te conseille d'ouvrir un autre post pour cette question =D

...