2017-10-08 3 views
-1

Dans ce code j'ai essayé de définir une classe qui écrira dans un fichier. Dans la méthode init le nom du fichier est passé. J'ai aussi défini une méthode nommée " écrire "pour écrire dans le fichier. Puis j'ai créé une instance de la classe et j'ai passé la valeur du nom de fichier. Après cela, j'ai appelé la méthode d'écriture et j'ai passé le message pour écrire dans le fichier.Enfin, j'ai vérifié fichier est créé et si le fichier a le code du message.Here:Définir une classe à écrire dans un fichier en Python

class Logfile(object): 
    def __init__(self,file_name): 
     self.file_name = file_name 

    def write(self,msg): 
     with open('self.file_name','w') as myFile: 
      myFile.write(msg) 

log = Logfile('myNewFile.txt') 
log.write("this is a log file.") 

with open('myNewFile.txt','r') as readFile: 
    read_file = readFile.read() 

    for line in read_file: 
     print(line) 

Mais, il montre une erreur:

FileNotFoundError: [Errno 2] No such file or directory: 'myNewFile.txt'

Ce code python est enregistré dans un dossier de bureau appelé "Mon dossier". Et quand je vais là-bas, il n'y a vraiment pas un tel fichier nommé "myNewFile.txt".

Mais, si je lance le programme avec la partie vérification du code, je veux dire, cette partie:

with open('myNewFile.txt','r') as readFile: 
    read_file = readFile.read() 

    for line in read_file: 
     print(line) 

alors, il n'y a pas d'erreur, mais toujours le « myNewFile.txt » n'est pas créé.

Pouvez-vous s'il vous plaît aidez-moi?

+6

Dans votre méthode 'write':' 'self.file_name'' ->' self.file_name' L'une est une chaîne, l'autre est votre variable membre – UnholySheep

+0

Oh, je l'ai eu. Donc idiot de moi.Merci – Protul

+0

Vous ouvrez ceci: avec open ('self.file_name', 'w') comme myFile. Mais 'self.filename_name' n'est pas le nom du fichier. C'est une variable. –

Répondre

0

Dans la méthode write vous devez écrire:

with open(self.file_name, ‘w’) as my_file 

parce self.file_name est déjà une chaîne.

0
log = Logfile('myNewFile.txt') 
log.write("this is a log file.") 

with open('myNewFile.txt','r') as readFile: 
    read_file = readFile.read() 

    for line in read_file: 
     print(line) 

Vous pouvez toujours essayer d'ouvrir le fichier en utilisant with open(log) parce que vous avez déjà fait le fichier txt une variable. Je n'ai jamais essayé ceci et ai peu d'expérience avec ce type de code, mais cela pourrait valoir la peine.