IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Accès à un répertoire, Permission denied


Sujet :

Python

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 96
    Points : 72
    Points
    72
    Par défaut Accès à un répertoire, Permission denied
    Bonjour à tous,

    dans mon programme python j'appele une fonction qui récupère le path d'un logiciel (écrit en dur dans un fichier de conf) puis qui l'execute. Seulement lorsque Python tente d'accéder au répertoire j'obtiens :

    sh: 1: /home/michel/Desktop/softwares/my_soft/: Permission denied
    Est-ce parce que je pars depuis la racine ? J'ai modifié les droits sur tous les répertoires du path (chmod ugo+x) mais rien n'y fait.


    EDIT : voici mon code :

    ma fonction qui récupère le path situé dans un fichier de conf :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    def Configuration_MySoft (conf_file):
    	Pita_path=""
    	with open(conf_file, "r") as conf_file:
    		conf = conf_file.readlines()
     
    		for lines in conf:
    			if "MySoft_location" in lines:
    				MySoft_path=lines.strip("MySoft_location=")
     
    	return(MySoft_path)

    Et l'appel à cette fonction dans mon programme principal :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    os.system(""+paths_definition.Configuration_MySoft("paths.conf")+"  .....

    Merci à vous.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Ajoutez shell=True à l'appel os.system!
    Mais pourquoi appelez une fonction via un os.system?

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 96
    Points : 72
    Points
    72
    Par défaut
    salut wiztricks merci pour ta réponse.

    En fait dans mon os.system j'appel un software auquel je passe différents paramètres dont des fichiers. Et j'utilise ma fonction pour que Python localise l'endroit où se situe le logiciel.



    Y a t'il une meilleure solution ?

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,
    Pardonnez moi mais je me suis laissé avoir par la façon que vous avez eu de présenter: vous n'y êtes pour rien.

    L'erreur dit juste que "s/process n'a pas les droits d'accéder au répertoire".

    J'ai supposé que vous aviez testé "avoir accès au répertoire" hors programme.
    Et que le s/process n'héritant pas du contexte du père avait peut être besoin du shell pour se construire... Mais démarré via os.system, le shell est toujours là: c'était une fausse "bonne idée" d'autant qu'il est loin d'être certain que vous aviez fait le minimum syndical pour dérouler cette hypothèse.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonjour,

    sh: 1: /home/michel/Desktop/softwares/my_soft/: Permission denied
    os.system(""+paths_definition.Configuration_MySoft("paths.conf")+" .....
    Ben oui... Un répertoire n'est pas un exécutable...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> os.system("/home/patrice/Bureau/")
    sh: /home/patrice/Bureau/: Permission denied
    32256
    @+

    Edit : Je n'ai sans doute pas besoin de le préciser mais un print de la commande (""+paths_definition.Configuration_MySoft("paths.conf")+" .....) envoyée à os.system devrais vous aider.
    Merci d'utiliser le forum pour les questions techniques.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 96
    Points : 72
    Points
    72
    Par défaut
    En effet est plus approprié lorsqu'il s'agit de changer de répertoire.

    Merci à vous.

  7. #7
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Rien a voir avec l'erreur:
    Avec .readlines() vous récupérez les fin de lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> with open('argsk.py', "r") as conf_file:
    ...     conf = conf_file.readlines()
    ... 
    >>> conf
    ['#!/usr/bin/env python\n', 'for v in "abcd":\n', '    print(v)\n']
    Ce que vous envoyez à os.system qui lui accepte le saut de page.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> os.system("/home/patrice/Bureau/tt/\n" + "ls")
    sh: /home/patrice/Bureau/tt/: Permission denied
    argsk.py
    0
    os.chdir n'est qu'un contournement de celle ci.

    Note: Pourquoi conf = conf_file.readlines() ? Un simple for line in conf_file est bien suffisant. Après a vous de voir pour ce qui est du saut de ligne.

    @+
    Merci d'utiliser le forum pour les questions techniques.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Permission denied sur répertoire /home
    Par ciol007 dans le forum Apache
    Réponses: 2
    Dernier message: 14/06/2014, 21h21
  2. Réponses: 4
    Dernier message: 01/11/2010, 19h49
  3. Permission d'accès aux répertoires
    Par flash_math dans le forum Framework .NET
    Réponses: 2
    Dernier message: 27/01/2008, 19h41
  4. permission denied
    Par HULK dans le forum Apache
    Réponses: 2
    Dernier message: 08/04/2004, 19h46
  5. [PostgreSQL]permission denied
    Par alex2205 dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 13/02/2003, 13h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo