Comment obtenir python pour ouvrir un à l'extérieur de fichier?
Je suis en train d'écrire un programme pour la classe qui ouvre un fichier, compte le nombre de mots, renvoie le nombre de mots, et se ferme. Je comprends comment tout faire excepeté obtenir le fichier à ouvrir et afficher le texte c'est Ce que j'ai à ce jour:
fname = open("C:\Python32\getty.txt")
file = open(fname, 'r')
data = file.read()
print(data)
L'erreur que j'obtiens est:
TypeError: invalid file: <_io.TextIOWrapper name='C:\\Python32\\getty.txt' mode='r'
encoding='cp1252'>
Le fichier est enregistré à la bonne place et j'ai vérifié l'orthographe, etc. Je suis à l'aide de pycharm à travailler sur ce dossier et le fichier que je suis en train d'essayer d'ouvrir dans le bloc-notes.
Vous devez vous connecter pour publier un commentaire.
Vous utilisez
open()
deux fois, si vous avez déjà ouvert le fichier, puis vous essayez d'ouvrir le fichier déjà ouvert un objet... changer votre code:La
TypeError
est dire qu'il ne peut pas ouvrir le type de_io.TextIOWrapper
qui est ceopen()
retourne lors de l'ouverture d'un fichier.Edit: Vous devez vraiment être à la manipulation des fichiers comme suit:
parce que quand la
with
bloc est terminé, il va traiter les fichier de clôture pour vous, ce qui est très agréable.Le
r
avant que la chaîne ne peut empêcher python à partir de l'interprétation elle-même, laissant exactement comment vous l'a formé.with open(r"C:\Python32\getty.txt") as infile: data = infile.read()
Problème dans la première ligne. Qui devait être une simple mission, sans l'ouvrir. c'est à dire fname = "c:\Python32\getty.txt. Aussi, vous serez mieux pour échapper à la barre oblique inverse (par exemple,'\') ou mettre un " r " pour la chaîne littérale (ce n'est pas un problème avec votre programme spécifique, l'acheter peut devenir un problème si vous avez eu un caractère spécial dans le nom de votre fichier). Dans l'ensemble, le programme devrait être:
Mettre le nom de la partie après le fichier comme:
Vous êtes l'obtention de telles erreurs parce que quand vous écrivez dans le répertoire de votre fichier vous utilisez une barre oblique inverse
\
et ce n'est pas bon. Vous devez utiliser une barre oblique/
. E. gÀ partir de maintenant vous avez obtenu tous les fichiers de code sous
read
.mode fichier ('r', 'U', 'w', 'a', peut-être avec 'b' ou '+' ajouté)
Edit:
Si vous ne voulez pas changer les barres obliques, puis il suffit d'ajouter une
r
avant de la chaîne:r"path"