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 :

Programme de recherche de pdf


Sujet :

Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Chimiste
    Inscrit en
    Mai 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chimiste

    Informations forums :
    Inscription : Mai 2014
    Messages : 9
    Points : 4
    Points
    4
    Par défaut Programme de recherche de pdf
    Bonjour à tous,

    Je suis chimiste mais dans le cadre de mon travail, j'aurais besoin de "créer" un programme python permettant une recherche, puis un copier/coller & renommer d'un pdf.
    Mes connaissances en programmation étant plus que limitées, j'aimerais savoir si vous avez une idée de réalisation?

    Plus en détails:

    J'ai une interface avec un champ "Référence" et un bouton "PDF".
    En actionnant ce bouton, j'aimerais qu'il exécute ces étapes:
    - ouvrir l'explorateur pour que la personne retrouve l'emplacement du fichier XXX.pdf (emplacement d'accès aléatoire, C:\\, Z:\\, etc...)
    - copier ce fichier
    - le renommer en "Référence".pdf
    - coller ce nouveau fichier dans un emplacement unique prédéfini (ex: Serveur:\\EnsembleRef\).

    En espérant avoir mis toutes les infos.

    Merci d'avance pour votre précieuse aide.


    Epohiel

  2. #2
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Quelques questions supplémentaires dont les réponses orienteront le code:

    - la recherche concerne le répertoire de recherche seulement, ou avec ses (éventuels) sous-répertoires?

    - est-ce qu'on recherche un seul fichier .pdf ou plusieurs? S'il y en a plusieurs, est-ce qu'on ne renvoie que le 1er ou tous?

    - quand on recopie le fichier renommé dans le répertoire prévu, que fait-on s'il y a déjà un fichier qui porte ce nom? (s'il y en a déjà un et si on ne prévoit rien, il sera remplacé par le nouveau)

    - l'extension ".pdf" du nom des fichiers est-elle toujours en minuscule (.pdf) ou en majuscule (.PDF), ou peut-elle être une fois l'un une fois l'autre?
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  3. #3
    Candidat au Club
    Homme Profil pro
    Chimiste
    Inscrit en
    Mai 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chimiste

    Informations forums :
    Inscription : Mai 2014
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Pour les questions complémentaires:

    - la recherche concerne le répertoire et les sous-répertoires. En fait, La personne a préalablement enregistré son fichier pdf (souvent n'importe où) puis il s'agit de le récupérer (le chercher manuellement) afin de pouvoir le "ranger".

    - Le fichier ".pdf" est unique.

    - Normalement, aucun fichier ne portera le même nom. (le remplacer par le nouveau le cas échéant mais ne devrait jamais être rencontré)

    - Normalement aussi, l'extension ".pdf" du nom des fichiers est toujours en minuscule.


    Merci

  4. #4
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Voilà un petit code qui a l'air de faire le boulot (Python 3):

    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
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    # Python 3
     
    import os
     
    from fnmatch import filter
     
    from shutil import copy2
     
    #############################################################################
    def cherchefichierpdf(repsource):
        for rep, sreps, fics in os.walk(repsource):
            for fic in filter(fics, "*.pdf"):
                return os.path.join(rep, fic) # renvoie le 1er trouvé et arrête la recherche
        return ""    
     
    #############################################################################
    repsource = r"c:\repertoire_source"
    repdest = r"c:\repertoire_destination"
     
    fichier = cherchefichierpdf(repsource)
    if fichier=="":
        print("Aucun fichier pdf trouvé")
    else:
        print("Fichier trouvé: ", fichier)
     
        # recopie du fichier dans le répertoire destination avec le nouveau nom "Référence.pdf"
        ficdest = os.path.join(repdest, "Référence.pdf")
        copy2(fichier, ficdest) # recopie sous le nouveau nom
        print("Recopie terminée")
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  5. #5
    Candidat au Club
    Homme Profil pro
    Chimiste
    Inscrit en
    Mai 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chimiste

    Informations forums :
    Inscription : Mai 2014
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Tout d'abord, merci pour ta réponse rapide tyrtamos.

    Cependant, il semblerait que j'ai mal expliqué ma problématique.

    Premièrement, il faudrait un programme qui puisse fonctionner avec python 2.x (En effet, mon entreprise possède uniquement des pcs avec ces versions de python, sans possible évolution pour le moment).


    Ensuite, pour le programme en lui-même:

    - Le champ "Référence" est une variable (une centaine actuellement), écrite sans règle précise, exemples : ABCD01500, 19Ads 32A, etc...
    Ce champ est renseigné par l'utilisateur.

    - A ce champ doit correspondre un pdf, classé dans un répertoire unique (C:\Bureau\), accessible par un bouton et nommé exactement pareil, ex: ABCD01500.pdf, 19Ads 32A.pdf, etc... Jusqu'ici, c'est bon.

    - Mon problème est le suivant :

    Lors de l'ajout d'une "Référence" (ex : ABCD19, cette donnée est bonne!), l'utilisateur lambda a enregistré le .pdf correspondant dans le mauvais répertoire (Z:\perdu\) et sous le nom Y19_43.pdf.
    Il faut donc que le programme puisse "demander" à l'utilisateur lambda où se trouve le pdf (opération de l'utilisateur) et une fois que l'information est renseignée, le programme enregistre automatiquement ainsi: C:\Bureau\ABCD19.pdf, sans toutefois toucher au fichier initial.

    Voilà, j'espère avoir été complet et désolé d'apporter ces précisions un peu tardivement.

    Merci par avance


    Epohiel

  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,

    Il est nécessaire de savoir quel est le framework graphique qu'utilise ton programme.

    Les frameworks graphiques ont une boîte de dialogue qui permet de faire exactement ce que tu demandes. Et bien plus encore.

  7. #7
    Candidat au Club
    Homme Profil pro
    Chimiste
    Inscrit en
    Mai 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chimiste

    Informations forums :
    Inscription : Mai 2014
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Salut,

    Comment puis-je trouver ce framework graphique?
    Je sais que le programme de base utilise ChemScript, un logiciel basé sur python 2.5.
    Pour le reste, je veux bien être éclairé


    Epohiel

  8. #8
    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
    Citation Envoyé par Epohiel Voir le message
    J'ai une interface avec un champ "Référence" et un bouton "PDF".
    En actionnant ce bouton,...
    Quel est le nom de ce programme et que se passe-t-il actuellement lorsque l'on clique sur ce bouton ?

  9. #9
    Candidat au Club
    Homme Profil pro
    Chimiste
    Inscrit en
    Mai 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chimiste

    Informations forums :
    Inscription : Mai 2014
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Lorsque l'on clique sur le bouton, il ne se passe rien.

    Le programme principal s'appelle ChemBioFinder (licence CambdrigeSoft) et permet d'avoir des interactions entre la partie chimie (molécules, masse moléculaire, etc..) et l'informatique (via ChemScript et python).

    Sur une nouvelle database que l'on essaie de bâtir grâce à ChemBioFinder, j'ai crée un bouton tout simple auquel j'applique le script python (cf exemple1, l'éditeur de script).

    Nom : exemple1.jpg
Affichages : 651
Taille : 39,2 Ko

    Il me faut lancer le programme python à partir de là (mettre le code ou lancer un programme.py).
    Et c'est le programme à exécuter que je recherche.


    Voilà, en espérant que mes réponses puissent vous aider.

    Merci

  10. #10
    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
    Un exemple simple de code.
    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
     
    # -*- coding: utf-8 -*-
     
    import os
    import shutil
    import tkFileDialog
     
    # FIXME actualiser le chemin
    DEST = "Serveur:\\EnsembleRef"
     
    def get_file_name(filename=None):
        options = {'defaultextension': '.pdf',
                   'filetypes': [("PDF files", "*.pdf")],
                   'title': 'Recherche de fichier'}
        if filename is not None:
            options['initialfile'] = filename
        return tkFileDialog.askopenfilename(**options)
     
    #if __name__ == '__main__':
    def copy_file():
        filename = get_file_name()
        if os.path.isfile(filename):
            name = os.path.basename(filename)
            dest = os.path.join(DEST, name)
            shutil.copy2(filename, dest)
    Tu peux déjà le tester en commentant def copy_file(): et en décommentant if __name__ == '__main__':


    Toutefois, je ne vois pas trop comment tu l'appelleras à partir de ton bouton existant. Mais ça c'est une question d'implémentation.

  11. #11
    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 Epohiel Voir le message
    - Mon problème est le suivant :

    Lors de l'ajout d'une "Référence" (ex : ABCD19, cette donnée est bonne!), l'utilisateur lambda a enregistré le .pdf correspondant dans le mauvais répertoire (Z:\perdu\) et sous le nom Y19_43.pdf.
    Pourquoi ne pas faire en sorte que ce soit le programme qui créé le fichier au bon endroit avec le bon nom plutôt que de laisser l'utilisateur faire n'importe quoi et pédaler ensuite pour remettre les choses à leur place?

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

  12. #12
    Candidat au Club
    Homme Profil pro
    Chimiste
    Inscrit en
    Mai 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chimiste

    Informations forums :
    Inscription : Mai 2014
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Salut wiztricks,

    En effet, l'idéal serait que le programme le fasse.
    C'est ce que je souhaiterais d'ailleurs: à partir d'un pdf, le programme copie le fichier au bon endroit avec le bon nom.

    Cette alternative pourrait être intéressante une fois que les anciens fichiers sont enregistrés, pour ajouter de nouvelles références.

    J'y réfléchis. Merci


    Epohiel

Discussions similaires

  1. Moteur de recherche dans PDF
    Par jhice dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 09/05/2006, 14h58
  2. Réponses: 5
    Dernier message: 05/05/2006, 20h15
  3. Programme effectuant recherches par URL ??
    Par pouic06 dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 12/04/2006, 13h51
  4. Programme de recherche des fichiers
    Par lion13 dans le forum Linux
    Réponses: 2
    Dernier message: 05/03/2006, 22h28
  5. Préfixes segments programmes (PSP) : recherche de doc
    Par pucenet dans le forum Assembleur
    Réponses: 21
    Dernier message: 30/03/2005, 23h05

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