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 :

Lancer un script Python sur un dossier Linux


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2020
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2020
    Messages : 25
    Par défaut Lancer un script Python sur un dossier Linux
    Bonjour,

    J'ai développé un script en Python, dont l'objectif est la modification d'un fichier pour le passer d'une version à une autre version (en y appliquant des modifications).
    Ce script fonctionne très bien sous Windows et j'aimerais pouvoir faire de même sous Linux.
    Fonctionnement du script : L'utilisateur choisit un dossier, puis un fichier sur son explorateur. A l'issu du choix du fichier le script se lance (effectue les modifications dans le fichier d'origine si nécessaire et en crée un nouveau en rajoutant "fichier_new".

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    from tkinter import Tk
    from tkinter import filedialog
    import os
    #######################
    #C'est pour cette première partie qu'une manipulation doit être possible pour Linux j'imagine
    root = Tk()
    root.withdraw()
     
    current_directory = filedialog.askdirectory()
    select_file = filedialog.askopenfilenames()
     
    file_path = os.path.join(current_directory,str(select_file))
    print(file_path)
    #######################
    import re
     
     
    ###Ensemble des modifications dans le fichier que je n'ai pas détaillé car inutile pour la compréhension du code 
    dict = {'C':{'test1':'test2'},}
    ####
    def find_END(line):
        if re.search(r'\bFIN\b', line):
            return True
        else:
            return False
     
    def replacer_factory1(dictionary):
        def replacing(match):
            if len(dictionary) > 0:
                word = match.group()
                exchange = dictionary.get(word, word)
                return exchange
            else:
                return ""
        return replacing
     
    def replacing1(text, dict):
        regex_patt_list = r'\b(?:' + '|'.join(dict) + r')\b'
        replacer = replacer_factory1(dict)
        return re.sub(regex_patt_list, replacer, text)
     
    with open(file_path) as fin:
        with open(file_path + 'new', 'w') as fout:
            key = 0
            flag = 0
            sous_dict = dict["C"]
            cache_mem = []
            for line in fin:
                cache_mem.append(line)
                if find_END(line):
                    #print(cache_mem)
                    for x in cache_mem:
                        if x.strip() in dict.keys():
                            key = x.strip()
                            sous_dict = dict[key]
                        fout.write(replacing1(x,sous_dict))
                    cache_mem = []
    Ma question est la suivante. J'aimerais faire de même pour Linux ( sélection d'un dossier, puis fichier et lancement du script).

    Merci d'avance pour votre aide.

  2. #2
    Membre Expert

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Par défaut
    Bonjour

    Vous l'avez fait tourner sur Linux déjà pour voir ce que ça donne ?
    Car en principe Python est multiplateforme, donc pour beaucoup de programme ça fonctionne Linux & Windows sans aucun changements.

    Et si cela ne fonctionne pas sous linux, et bien rapporter nous l'erreur

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2020
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2020
    Messages : 25
    Par défaut
    Bonjour, et merci pour ta réponse.

    Alors le code fonctionne parfaitement sous Linux, sauf que je suis obligé de spécifier les fichiers que je souhaite modifiés sous linux et j'aimerais que l'utilisateur puisse le faire directement en sélectionnant un dossier ou un fichier sur son ordinateur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    with open("a.txt") as fin:
        with open("b.txt", 'w') as fout:
    J'aimerais que l'utilisateur spécifie un dossier en lançant le script Python comme ceci par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    python monfichier.py mondossier/
    , mais ceci ne fonctionne pas.

    Merci pour ton aide.

  4. #4
    Membre Expert

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Par défaut
    Donc c'est une manière différente de lancer le script. Là ça ne passe plus par une interface Tkinter.

    Indépemment de Linux vous pourriez vous poser la question ! Car Windows a aussi son terminal système, et on pourrait tout autant lancer votre programme via la commande voulue :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    python monfichier.py mondossier/
    Regardez ce qu'il ce passe si monfichier.py contient:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    import sys
    print(sys.argv)
    Vous pouvez donc récupérer, dans le code, la commande par lequel il a été lancé.

    Sur ce cas simple vous pouvez vous en tirer juste en utilisant sys.argv. Si vous avez des besoins plus complexes au niveaux des arguments/options qui sont passables à votre programme en ligne de commande, alors pour ca il y a un package : https://docs.python.org/fr/3/howto/argparse.html

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2020
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2020
    Messages : 25
    Par défaut
    Merci beaucoup pour ta réponse,

    Je vais creuser dans cette piste.

Discussions similaires

  1. Afficher les réponses d'un script python sur un page web
    Par Gregzz dans le forum Réseau/Web
    Réponses: 8
    Dernier message: 06/08/2010, 12h48
  2. lancer un script shell sur un serveur distant avec php
    Par MSM_007 dans le forum Langage
    Réponses: 1
    Dernier message: 03/05/2010, 11h32
  3. Réponses: 8
    Dernier message: 30/09/2009, 18h25
  4. Lancer rapidement un script Python sur Mac
    Par rambc dans le forum Général Python
    Réponses: 2
    Dernier message: 29/09/2009, 12h04
  5. [Système] Lancer un script python en PHP
    Par gannher dans le forum Langage
    Réponses: 10
    Dernier message: 13/09/2007, 11h24

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