Bienvenue sur IndexError.

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

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

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

...