J'utilise le code suivant pour ouvrir un fichier basé sur le chemin d'accès défini par l'utilisateur, mais je reçois des erreurs. Aucune suggestion?

f = raw_input("\n Hello, user. "
    "\n \n Please type in the path to your file and press 'Enter': ")
    file = open('f', 'r')

Il dit que f est indéfini ou rien de tel n'existe ... même si je le définis? Utiliser «r» pour lire le fichier.

0
kaoscify 21 oct. 2011 à 11:15

4 réponses

Meilleure réponse

Vous ne devriez pas avoir le f entre guillemets:

myfile = open(f, 'r')

'f' signifie la chaîne composée de la lettre f, donc votre code recherchait un fichier appelé f et ne l'a pas trouvé. Utilisez plutôt f qui signifie la valeur de la variable f.

N'appelez pas non plus la variable pour stocker votre fichier file. Cela se fait facilement mais essayez de l'éviter. Il existe déjà une classe intégrée appelée file et il est préférable de ne pas masquer de classes ou de fonctions intégrées avec vos propres noms. En effet, tout autre code que vous voyez s'attendra à ce que file représente la classe de fichier et non votre variable.

Une façon de voir si un terme est utilisé est d'utiliser la fonction help:

>>> help(file)

Help on class file in module __builtin__:

class file(object)
 |  file(name[, mode[, buffering]]) -> file object
 |  
 |  Open a file.  The mode can be 'r', 'w' or 'a' for reading (default),
 |  writing or appending.  The file will be created if it doesn't exist

Et comme l'indentation est importante en Python, je recommanderais d'avoir exactement votre indentation lorsque vous publiez du code ici.

6
Dave Webb 21 oct. 2011 à 07:23

Open () renvoie un objet fichier et est le plus souvent utilisé avec deux arguments: open (nom de fichier, mode).

>>> f = open('/tmp/workfile', 'w')

Pour plus d'informations sur les fichiers, vous pouvez consulter ce lien

0
ScoRpion 21 oct. 2011 à 07:21

Ne mettez pas f entre guillemets. f est une variable qui contient une chaîne, mais dans votre espace ouvert, vous utilisez la valeur de chaîne 'f'.

file = open(f, 'r')
1
AndrewR 21 oct. 2011 à 07:18

Vous essayez d'ouvrir la chaîne «f». Essaye ça:

file = open(f, 'r')
2
senak 21 oct. 2011 à 07:18