Pourquoi suis-je IOError: [Errno 13] le refus d'une Autorisation?
Je suis la création de fichier Journal pour le code, mais j'obtiens l'erreur suivante :
[Mar Juin 11 17:22:59 2013] [error] [client 127.0.0.1] importer mainLCF [Tue Jun 11 17:22:59 2013] [error] [client 127.0.0.1] le Fichier "/home/ai/Desktop/home/ubuntu/LCF/GA-LCF/mainLCF.py", à la ligne 10, [Tue Jun 11 17:22:59 2013] [error] [client 127.0.0.1] enregistrement.basicConfig(filename='génétique.le journal',niveau=logging.DEBUG,format='%(asctime)s %(message)s", datefmt='%m/%d/%Y %h:%M:%S %p') [Tue Jun 11 17:22:59 2013] [error] [client 127.0.0.1] le Fichier "/usr/lib/python2.7/logging/__init__.py", de la ligne de 1528, dans basicConfig [Tue Jun 11 17:22:59 2013] [error] [client 127.0.0.1] hdlr = FileHandler(filename, mode) [Tue Jun 11 17:22:59 2013] [error] [client 127.0.0.1] le Fichier "/usr/lib/python2.7/logging/__init__.py" de ligne, 901, dans __init__ [Tue Jun 11 17:22:59 2013] [error] [client 127.0.0.1] StreamHandler.__init__(self, self._open()) [Tue Jun 11 17:22:59 2013] [error] [client 127.0.0.1] le Fichier "/usr/lib/python2.7/logging/__init__.py" de ligne, 924, dans _open [Tue Jun 11 17:22:59 2013] [error] [client 127.0.0.1] stream = open(self.nom_fichier_base, de soi.mode) [Tue Jun 11 17:22:59 2013] [error] [client 127.0.0.1] IOError: [Errno 13] la Permission refusée: "/génétique.le journal'
J'ai vérifié les autorisations dans le dossier où je veux en faire le journal, mais le problème persiste .
Mon code est : (le nom est mainLCF.py)
importation de journalisation import sys la journalisation.basicConfig(filename='génétique.le journal',niveau=logging.DEBUG,format='%(asctime)s %(message)s", datefmt='%m/%d/%Y %h:%M:%S %p') la journalisation.debug("à partir de l'Algorithme Génétique") sys.chemin d'accès.append("/home/ai/Bureau/home/ubuntu/LCF/ws_code") importation de tableau noir de pyevolve importation * def eval_func(chromosome): certains ici
Mon système de fichier de la structure :
/ la maison l'ia Bureau la maison ubuntu LCF ws_code GA-LCF tableau noir.py main-LCF.py
Je suis d'appel mainLCF.py à partir d'une autre fonction lcf.py qui est dans ws_code .
Vous êtes en train d'écrire à
Pourquoi est-il de le faire ? Ne devrait-elle pas de produire le journal dans n'importe quel répertoire le code est présent ?
BTW: je ne sais pas si c'est dû à votre code de raccourcissement, mais vous devriez reconsidérer l'utilisation de la star des importations.
'/genetic.log'
, qui est à la racine du système de fichiers, pas dans quel dossier vous vérifié les autorisations de.Pourquoi est-il de le faire ? Ne devrait-elle pas de produire le journal dans n'importe quel répertoire le code est présent ?
BTW: je ne sais pas si c'est dû à votre code de raccourcissement, mais vous devriez reconsidérer l'utilisation de la star des importations.
OriginalL'auteur | 2013-06-11
Vous devez vous connecter pour publier un commentaire.
Vous devez modifier le fichier de Log chemin à l'aide de l'enregistrement.les gestionnaires module python .
Dans mon cas, j'ai fait les choses suivantes :
et cela a fonctionné. Cependant je ne sais toujours pas la raison pour laquelle il a été plus tôt en essayant de faire génétiques.log à la racine du répertoire .
Oui .. j'ai voulu trouver la méthode de définition du chemin d'accès absolu sans utilisation de la journalisation des gestionnaires, mais je n'ai pas pu en trouver un.
OriginalL'auteur
Ressemble journalisation essayé d'ouvrir le fichier que
/genetic.log
. Si vous passez le nom de fichier comme argument mot-clé àlogging.basicConfig
il crée unFileHandler
qui passe àos.path.abspath
qui élargit le nom de fichier d'un chemin d'accès absolu basé sur votre travail en cours dir. Donc, soit vous êtes dans votre répertoire racine ou vos changements de code de votre travail actuel dir.Avez-vous une idée comment orienter les fichiers de log dans un dossier particulier ?
Probablement pas, puisque l'abattage des arbres.basicConfig est appelé avant pyevolve est importé. Comment voulez-vous commencer mainLCF.py?
Je l'appelle à partir d'un autre fichier dans ws_code.
Je l'ai fait par l'utilisation de la Journalisation des gestionnaires d'
OriginalL'auteur b3orn
Bien que votre code semble correct, je pense qu'il est préférable d'assigner un chemin d'accès absolu. Si vous développez sur votre machine locale et l'application s'exécute sur un autre serveur, il y a probablement quelques différences, comme, qui appelle le processus.
Les journaux sont recommandés pour être écrit à
/var/log/app_name
OriginalL'auteur Nitzan Cohen