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 :

Portage Windows vers Linux Ubuntu [Python 2.X]


Sujet :

Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 13
    Points : 8
    Points
    8
    Par défaut Portage Windows vers Linux Ubuntu
    Bonjour,

    Je cherche à porter un programme de ma confection de Windows vers GNU/Linux Ubuntu. Mon programme fonctionne de manière parfaite sous Windows7 (une fois n'est pas coutume) et quand je le lance sur Ubuntu par contre pas du tout. J'ai remonté les erreurs jusqu'à cette fonction qui gère une des permissions de mon programme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    def Permission_Veille (user):
    	"""Fonction de lectures des données utilisateurs"""
     
    	########### Recherche par nom d'inventeur et de mandataire
    	"""On ouvre le fichier permission"""
    	try:
    		userVeillepermission=open("permission/actu_permission/"+user+"_Veille_permission.txt","r")
    	except: 
    		PERLOG=open("permission_error.txt", "a")
    		PERLOG.write("le fichier permission/actu_permission/"+user+"_Veille_permission.txt est manquant \n \n")
    		PERLOG.close()
     
    	user_Veille_permission=[]
    	jumpline="\n"
     
    	"""On établit la permission"""
    	for veillepermission in userVeillepermission :
    		veillepermission = veillepermission.lower()
    		veillepermission = veillepermission.decode("latin-1")
     
    		if veillepermission !="\n" and veillepermission == "oui" :
    			user_Veille_permission.append(veillepermission)
    		elif veillepermission !="\n" and veillepermission == "yes" :
    			user_Veille_permission.append(veillepermission)
    		elif veillepermission !="\n" and veillepermission == "non" :
    			user_Veille_permission.append(veillepermission)
    		elif veillepermission !="\n" and veillepermission == "no" :
    			user_Veille_permission.append(veillepermission)
     
    	userVeillepermission.close()
     
    	return user_Veille_permission
    J'ai réussi à déterminer qu'il y avait bien exécution du try mais je n'arrive pas à savoir si il rentre dans le for ou dans les if car les print que j'insère dans dans le code ne me renvoient rien. Je n'arrive pas non plus à me faire renvoyer les valeurs présentes dans la liste sans que le terminal m'invente des erreurs de syntaxe .

    Au passage je travaille sur Python 2.7.12 et Ubuntu 16.04 LTS

    Est ce que quelqu'un aurait une idée du problème ? Merci

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par SidereusNuncius Voir le message
    J'ai remonté les erreurs jusqu'à cette fonction qui gère une des permissions de mon programme :
    Lorsque Python plante, il a pour habitude de donner le numéro de ligne, l'instruction et la cause.
    Si vous ne postez pas ces informations, on pourrait penser qu'il s'agit d'un problème de logique (çà ne fonctionne pas comme attendu) mais dans ce cas, sans le décrire, l'imaginer à partir du code demande un temps que vous pourriez nous faire économiser.

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

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Mais parce qu'il ne plante pas. Le programme s’exécute sans faire d'erreurs parce le code des options de permissions comme celle que j'ai posté n'est pas interprétés, vraisemblablement, comme sur windows7 et du coup les 2/3 tiers du programmes ne se lance pas puisque la permission est considéré comme non donnée.

    Ce que je cherche à comprendre c'est ce qui dans le code n'est pas interprété correctement et comment je pourrai corriger ça pour que ça fonctionne indifféremment sur GNU/Linux et Windows

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par SidereusNuncius Voir le message
    Ce que je cherche à comprendre c'est ce qui dans le code n'est pas interprété correctement et comment je pourrai corriger ça pour que ça fonctionne indifféremment sur GNU/Linux et Windows
    Si vous voulez qu'on puisse vous aider, il faut nous donner un peu de chances de comprendre le problème que vous rencontrez.
    Si vous pensez que le soucis est dans la fonction que vous avez posté, vu ce qu'elle fait, vous devriez poster un exemple avec un contenu de fichier lu et un retour différent de cette fonction sur Linux/Windows (sinon pourquoi montrer cette fonction là?).

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

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    La fonction en question est censé lire un fichier qui contient "oui" ou "non" et ranger cette valeur dans une liste pour que ce soit réutilisé ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    for user in users:
    	permissionArxiv = Permission_Arxiv(user)
     
    """Vérification des autorisations de la fonction de recherche du contenu scientifique"""
    	for line in permissionArxiv:
    		i = 0
    		if "oui" in permissionArxiv and i<1:
    			proceed = 1
    			i += 1
    		elif "yes" in permissionArxiv and i<1:
    			proceed = 1
    			i += 1
    		elif "non" in permissionArxiv and i<1 : 
    			LOG.write("\n Fonction de veille sur les publications scientifiques non non activée")
    			i += 1
    		elif "no" in permissionArxiv and i<1 : 
    			LOG.write("\n Fonction de veille sur les publications scientifiques non non activée")
    			i += 1
    		else: 
    			LOG.write("\n Des données anomales se trouvent dans le fichier de permission des publications scientifiques")
    			i += 1
     
    	"""Exécution de la fonction de recherche de publications scientifiques (ArXiv)"""
    	if proceed == 1 :
    		Arxiv (user,last_launch)	
    		proceed = 0
    Ce qui me permet de dire que c'est la fonction de permission qui foire c'est le fait que la variable proceed reste toujours à 0 sur GNU/Linux alors que mon fichier de permission contient la chaîne "oui". Sur windows je n'ai pas ce problème.

  6. #6
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Tout d'abord, dans ton premier code, tu ne tiens pas compte de l'éventuelle erreur.
    En cas d'erreur avec le fichier, tu te contentes d'écrire tes doléances dans un fichier log et tu laisses la fonction se poursuivre. Il faudrait un "return" là.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    def Permission_Veille (user):
    	"""Fonction de lectures des données utilisateurs"""
     
    	########### Recherche par nom d'inventeur et de mandataire
    	"""On ouvre le fichier permission"""
    	try:
    		userVeillepermission=open("permission/actu_permission/"+user+"_Veille_permission.txt","r")
    	except: 
    		PERLOG=open("permission_error.txt", "a")
    		PERLOG.write("le fichier permission/actu_permission/"+user+"_Veille_permission.txt est manquant \n \n")
    		PERLOG.close()
            return
    Ensuite tout ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    	user_Veille_permission=[]
    	jumpline="\n"
    	for veillepermission in userVeillepermission :
    		veillepermission = veillepermission.lower()
    		veillepermission = veillepermission.decode("latin-1")
     
    		if veillepermission !="\n" and veillepermission == "oui" :
    			user_Veille_permission.append(veillepermission)
    		elif veillepermission !="\n" and veillepermission == "yes" :
    			user_Veille_permission.append(veillepermission)
    		elif veillepermission !="\n" and veillepermission == "non" :
    			user_Veille_permission.append(veillepermission)
    		elif veillepermission !="\n" and veillepermission == "no" :
    			user_Veille_permission.append(veillepermission)
    se résume à ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    	for veillepermission in userVeillepermission:
                p = veillepermission.strip().lower()
                if p in ('oui', 'yes', 'non', 'no'):
                    # pourquoi dans une liste ?
                    return [p]
    Dans ton deuxième code, ceci n'est pas logique:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    	for line in permissionArxiv:
    		i = 0
    		if "oui" in permissionArxiv and i<1:
    ce ne serait pas plutôt:
    et le flag i n'a aucune utilité.

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par SidereusNuncius Voir le message
    Ce qui me permet de dire que c'est la fonction de permission qui foire c'est le fait que la variable proceed reste toujours à 0 sur GNU/Linux alors que mon fichier de permission contient la chaîne "oui". Sur windows je n'ai pas ce problème.
    Si vous écrivez:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	if veillepermission !="\n" and veillepermission == "oui" :
    			user_Veille_permission.append(veillepermission)
    vous vérifiez que la ligne n'est pas vide mais si elle contient "oui" elle doit s'écrire "oui\n" car "for veillepermission in userVeillepermission :" doit retourner les fins de lignes sauf s'il rencontre la fin du fichier avant.

    Ajoutez des lignes vides dans votre fichier après le "oui", Windows fera pareil que Linux.

    La vraie question c'est "pourquoi faire une fonction supposée lire X lignes non vides dans un fichier et retourner la liste de ce qu'il y trouve sans se donner la peine de tester qu'elle fait bien ce que vous en attendez?".
    Cette brique là pourrie, tout ce que vous allez construire avec sera aussi pourri et galère à mettre au point.

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

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

Discussions similaires

  1. Portage de Windows vers Linux
    Par ApproxDev dans le forum Qt
    Réponses: 1
    Dernier message: 15/08/2016, 19h00
  2. Portage Windows vers Linux
    Par Stéphane-M dans le forum Linux
    Réponses: 3
    Dernier message: 06/01/2011, 22h10
  3. Portage Appli Windows vers linux (C++)
    Par magic-moad dans le forum C++
    Réponses: 5
    Dernier message: 14/04/2010, 15h14
  4. pb CString : Windows vers Linux
    Par ostralo dans le forum C++
    Réponses: 12
    Dernier message: 25/01/2006, 15h51
  5. Réponses: 1
    Dernier message: 01/02/2005, 12h56

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