2010-10-23 6 views
2

Ceci est l'erreur que je reçois:Aucun fichier ou répertoire erreur

Traceback (most recent call last): 
    File "E:\stuff\module.py", line 91, in <module> 
    f = open('E:/stuff/log.txt') 
IOError: [Errno 2] No such file or directory: 'E:/stuff/log.txt' 

Et voici mon code:

f = open('E:/stuff/log.txt') 

Le fichier E:/stuff/log.txt existe. Je peux naviguer dans Windows Explorer et l'ouvrir alors pourquoi ne puis-je pas l'ouvrir?

EDIT:

Sortie de commande DIR:

C:\Documents and Settings\Administrator>dir e:\stuff 
Volume in drive E has no label. 
Volume Serial Number is 5660-4957 

Directory of e:\stuff 

23. 10. 2010 09:26 <DIR>   . 
23. 10. 2010 09:26 <DIR>   .. 
19. 10. 2010 20:07    385 index.py 
23. 10. 2010 16:12    1 954 module.py 
22. 10. 2010 19:16    8 335 backprop.py 
19. 10. 2010 20:54    1 307 backprop-input.gif 
19. 10. 2010 01:48    310 HelloWorld.kpf 
23. 10. 2010 15:47     0 log.txt.txt 
       6 File(s)   12 291 bytes 
       2 Dir(s) 8 795 586 560 bytes free 



C:\Documents and Settings\Administrator>dir e:\ 
Volume in drive E has no label. 
Volume Serial Number is 5660-4957 

Directory of e:\ 

16. 10. 2010 13:32 <DIR>   development-tools 
23. 10. 2010 09:26 <DIR>   stuff 
       0 File(s)    0 bytes 
       2 Dir(s) 8 795 586 560 bytes free 

Je suis en cours d'exécution du script python de la cmd comme ceci:

python E:\stuff\module.py 
+0

"Je peux naviguer dans l'Explorateur Windows". Alors? Faites une commande "DIR" à partir de l'invite de commande et copiez et collez cela aussi. –

+0

@S. Lott je l'ai fait. Voir ma question mise à jour. –

+1

@Richard: ce n'était pas une invite de commande, c'était un interpréteur python. – SilentGhost

Répondre

8

Tout d'abord, par le haut, Windows prend en charge/très bien. En second lieu: Eh bien, si vous regardez votre fichier, vous remarquerez que ce n'est pas log.txt, c'est log.txt.txt ... Vous pouvez le voir comme "log.txt" dans votre visualiseur de dossier graphique (par opposition à la commande "dir" de la CLI) simplement parce qu'elle cache les extensions de fichiers connues.

Je vous recommande de désactiver cela - voir les options du dossier, il devrait y avoir une option "Masquer les extensions de types de fichiers connus" (ou similaire).

1

comment sur les autorisations de lecture? peut-être pas autorisé à lire (mode par défaut d'ouverture)

+0

Il existe des autorisations de lecture et d'écriture. –

1

Étant donné qu'il s'agit de fenêtres et que la barre oblique inverse est un caractère d'échappement, vous devez doubler la barre oblique inverse pour y échapper. Essayez

e:\\stuff\\log.txt 
+0

Pourquoi ne pas utiliser r "e: \ stuff \ log.txt"? Pourquoi ne pas utiliser 'os.path.join (" E: "," stuff "," log.txt ")'? –

+0

OP utilise des barres obliques - l'échappement n'est pas un problème ici. Comme brady et Tim le soulignent à juste titre, le fichier 'log.txt' n'existe pas, c'est' log.txt.txt'. – paxdiablo

1

il faisait longtemps que je ne l'ai pas utiliser Windows, mais si je me souviens des fenêtres bien utiliser barre oblique inverse dans le chemin du système de sorte que vous devez faire:

import os 

file_name = os.path.join("e:\\stuff", "log.txt") 

f = open(file_name) 

et non:

f = open('E:/stuff/log.txt') 

il n'y a pas/dans les chemins dans les fenêtres.

+0

Python gère effectivement les barres obliques ok - il peut ne pas avoir quand vous l'avez utilisé, je ne sais pas combien de temps c'était :-) – paxdiablo

+0

@paxdiablo: excusez-moi? Je n'ai pas compris, j'ai dit que les fenêtres n'utilisent pas de barre oblique inversée dans le chemin comme unix. quand ai-je dit que python ne gère pas la barre oblique? – mouad

+0

Vous avez dit de ne pas utiliser 'f = open ('E: /stuff/log.txt')' alors qu'en fait cela fonctionnera bien. Vous n'avez pas besoin de barres obliques inverses. – paxdiablo

1

vous des noms de chemin en utilisant Define os.path.join()

root="E:\\" 
mylog = os.path.join(root,"stuff","log.txt") # or log.txt.txt as seen in your dir output 
f = open(mylog) 
... 
f.close() 
3

Regardez cette ligne dans la sortie "dir":

23. 10. 2010 15:47     0 log.txt.txt 

Le fichier que vous recherchez est nommé "log.txt.txt" , pas "log.txt". Je vois cela se produire lorsque les gens mettent en place le gestionnaire de fichiers Windows pour ne pas afficher les extensions de fichiers connues, puis ils essaient d'ajouter ou de modifier une extension. Je recommande aux autres de désactiver ce comportement. Vous pouvez le faire sous Affichage-> Options de dossier je crois.

+1

Juste une note: Les gens ne "configurent" pas de cette façon, c'est (malheureusement) le comportement par défaut. Une idée horrible, * horrible *, à mon avis, mais malheureusement, c'est comme ça. –

Questions connexes