2011-09-08 3 views
3

J'ai essayé de créer un script python qui édite un fichier, mais si le fichier est pas déjà, il a une erreur comme ceci:Comment puis-je modifier un fichier texte en Python?

Traceback (most recent call last): 
     File "openorcreatfile.py", line 56, in <module> 
     fileHandle = (pathToFile, 'w') 
     IOError: [Errno 2] No such file or directory: '/home/me/The_File.txt' 

Il fonctionne très bien si le fichier existe. J'ai également essayé ceci:

fileHandle = (pathToFile, 'w+') 

Mais il revient avec la même erreur. Ai-je besoin de vérifier explicitement si le fichier est présent? Si oui, comment puis-je créer le fichier?

EDIT: Désolé, j'ai réalisé que le dossier était manquant. Je suis un idiot.

+1

Je suppose (j'espère) que votre ligne de code est en fait 'fileHandle = open (pathToFile, 'w')'. Les répertoires parents doivent exister, mais pas le fichier. Lors de l'ouverture avec un handle d'écriture, le fichier doit être créé s'il n'existe pas déjà. –

+4

montrez-nous le code, pas seulement l'erreur. utilisez copier et coller au lieu de retaper de la mémoire (votre seconde coupée ne peut pas être correcte). – hop

Répondre

5

L'erreur indique "Aucun fichier ou répertoire de ce type".

Puisque vous essayez de créer un fichier, cela ne doit pas être ce qui manque. Vous devez donc créer le répertoire /home/me/.

Voir os.makedirs.

+0

Ceci est la première réponse à correspondre réellement à l'exception montrée, mais je doute fortement que l'OP essaye réellement de créer ''/home/me/The_File.txt''. L'OP doit toujours afficher le code réel. –

1
with open("filename.txt", "w") as f: 
    f.write("test") 
+3

Bien que l'utilisation correcte d'un gestionnaire de contexte, cela n'explique pas l'erreur que l'utilisateur rencontre. –

2

Pour vérifier si le fichier est là, vous pouvez faire:

import os.path 
os.path.isfile(pathToFile) 

afin que vous puissiez le manipuler, que si elle existe:

if os.path.isfile(pathToFile): 
    fileHandle = (pathToFile, 'w') 
else: 
    pass #or other thing 

Il y a plusieurs façons de créer un fichier en python, mais si vous voulez créer un fichier texte, jetez un oeil à numpy.savetxt, qui je pense est l'un des moyens les plus simples et les plus efficaces

+4

Ceci est complètement exagéré. 'open (pathToFile, 'w')' créera le fichier sauf si le répertoire parent n'existe pas. L'OP doit montrer le code réel, pas le pseudo-code de la mémoire, avant que tout puisse être fait pour diagnostiquer correctement le problème. –

+0

En fait, c'est une bonne suggestion pour aider l'op à résoudre l'erreur. – Benjamin

4
fo = open("myfile.txt", "wb") 

fo.write('blah') 

fo.close() 

C'est tout, cela fera l'affaire.

+0

vous pourriez ajouter la gestion des exceptions, dans le cas où le répertoire n'est pas présent. –

3

myfile = open ('test.txt', 'w')

myfile.write ("Ceci est mon premier fichier texte écrit en python \ n")

myfile.close()

+0

Il s'est avéré que c'était un répertoire manquant selon la mise à jour de la question. – Ren

Questions connexes