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 :

script de synchronisation de systéme de fichier


Sujet :

Python

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Par défaut script de synchronisation de systéme de fichier
    je reprend le titre de : http://www.developpez.net/forums/sho...e+modification car il est trés explicite.

    Alors voilà j'ai plusieur repertoire qui posséde les même fichier.
    Je fait evoluer les fichier de maniére identique mais j'en est marre de copier la nouvelle version du fichier dans les autre repertoire.

    Je ne désire pas utiliser un systéme tous fait mais utiliser se probléme pour apprend un plus en profondeur les fonctions sur les fichier de python.

    La partie gérant les dates n'est pas donner dans la faq.
    Ma question est donc comment trouver les dates de modification des fichier avec python.
    ( idem pour la date de création , car même si j'en est pas besoin je suis curieux )
    Comment connaitre les droit liée as un fichier est l'auteur.
    ( oui car je ne suis pas seul a modifier mes fichiers, je suis relier as un serveur cvs par eclipse. )

    Merci d'avance.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 119
    Par défaut
    os.stat() devrait faire tout cela.
    http://docs.python.org/lib/os-file-dir.html

    Peut etre veux tu aussi regarder filecmp.dircmp?

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Par défaut
    Je ne voit pas trop ce que fait : filecmp.dircmp mais je finirai par trouver avec mon ami google.

    Par contre y as-t-il moyen de comparé des check somme de mes fichiers ?
    Car comparé les temp ca renseigne mais surtout pour le sens de propagation, pourquoi copier un fichier identique ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ( cmp(file1,file2) ):
    fonctionne t-il avec une check somme ?
    Car je tente sur 2 file identique, mais il me dit que ce ne sont pas les même !

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 119
    Par défaut
    Citation Envoyé par DidUngar Voir le message
    Je ne voit pas trop ce que fait : filecmp.dircmp mais je finirai par trouver avec mon ami google.
    encore mieux: l'ami Python Library reference: http://docs.python.org/lib/dircmp-objects.html

    c'est une classe qui compare les contenus de deux répertoires.

    Par contre y as-t-il moyen de comparé des check somme de mes fichiers ?
    Car comparé les temp ca renseigne mais surtout pour le sens de propagation, pourquoi copier un fichier identique ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ( cmp(file1,file2) ):
    fonctionne t-il avec une check somme ?
    Car je tente sur 2 file identique, mais il me dit que ce ne sont pas les même !
    Non: cmp(file(filename),file(filename)) compare les deux objets file créés pour lire le fichier sur le disque, et va donc retourner False à tous les coups... Si tu fais cmp sur les noms de fichiers, il va bien sur comparer les deux chaines... pas très utile.

    Pour comparer deux fichiers:
    • soit comparer leurs stats, c'est à dire la taille et les dates, comme le fait filecmp.cmp(filename1,filename2)
    • soit comparer leur contenu f1.read()==f2.read() ou encore mieux filecmp.cmp(filename1,filename2,False)
    • soit comparer des "empreintes" (checksum ou hachage) comme tu le suggères. C'est utile notamment si la transmission avec le serveur distant est lente ou les fichiers volumineux. Dans ce cas, il faut stocker le resultat du hachage sur le serveur distant lors de la copie et ne calculer le hachage que pour le fichier local (sinon, quitte à lire les deux fichiers, autant les comparer directement octet par octet).


    Bon, il y a peut être d'autres méthodes, il y a aussi des outils tout fait (par exemple winmerge).

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Par défaut
    Je ne compare pas les 2 répertoire donc j'e vais laisser de coter cette fonction. Merci

    Effectivement si je compare les chaine de char, ca risque d'etre différent.

    f1.read()==f2.read() ne me convient pas car certaine des lib que je vais gérée sont en c compilée... Donc faudrez le faire octect par octet.

    Comparé octet par octet ne me géne pas , c'est eclipse qui fait la gestion cvs, et donc pas de connection lente au serveur, en plus étant propriot du serveur j'ai un debit local^^
    filecmp.cmp(filename1,filename2), ne convient donc pas.

    Et bien sur je fini avec du positif : filecmp.cmp(filename1,filename2,False), c'est parfait !
    Si j'ai bien suivit ca compare l'interieur, mais octect par octet , ou char par char ?

    Nouvelle question :
    - J'ai fait un touch sur mon fichier, filecmp.cmp(filename1,filename2,False) va t il considéré que c'est un nouveaux fichier, ou le même fichier ?
    - Une fois mes fonctions perso ecrite je voudrez en faire une lib personnel mais :
    ne semble pas fonctionner.

    En tous cas merci ca m'avance déjà beaucoup !

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 119
    Par défaut
    import file.py ne marche pas mais
    marche, à condition que "file" soit dans le path
    http://docs.python.org/tut/node8.htm...00000000000000

  7. #7
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Par défaut
    Je désire le garder dans le répertoire courant la notation ne fonctionne pas.
    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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    import http
     
     
     
     
    def check_quant_in(id,txt):
        return (
        txt.count('<a href="http://didungar.com/liens/?from='+id+'">didungar.com</a>')
        +
        txt.count('<a href="http://didungar.com/liens/?from='+id+'" target="_blank">didungar.com</a>')
        +
        txt.count('<a class="link" rel="nofollow" href="http://didungar.com/liens/?from='+id+'" onclick="window.open(this.href); return false;">')
        )
     
     
    liens_back = http_get("mon lien Admin")
     
    liens = liens_back.split(' ')
    for url in liens:
        if ( url != '' ):
            id = url.split('|')
            url = id[1]
            id = id[0].replace('|','')
            url = url.replace(' ','')
            source = http_get(url)
            if ( 1>check_quant_in(id,source) ):
                print  'Retour non trouver ( id=' , id , ' ) ==> ' , url
            # Dans un commentaire !
            com = ( 0==1 )
            com_ = 0
            temp = ""
            for char in source:
                # Chercher le commantaire :
                if ( not(com) ):
                    if ( com_ == 0 ):
                        if ( char == '<' ):
                            com_ += 1 # J'ai <
                        else:
                            com_ = 0
                    else:
                        if ( com_ == 1 ):
                            if ( char == '!' ):
                                com_ += 1 # J'ai <!
                            else:
                                com_ = 0
                        else:
                            if ( com_ == 2 ):
                                if ( char == '-' ):
                                    com_ += 1 # J'ai <!-
                                else:
                                    com_ = 0
                            else:
                                if ( com_ == 3 ):
                                    if ( char == '-' ):
                                        com = (1==1)# J'ai <!--
                                        temp = ""
                                        com_ = 0
                                    else:
                                        com_ = 0
                else:
                    # Toujours en commentaire ?
                    if ( com_ == 0 ):
                        if ( char == '-' ):
                            com_ += 1 # J'ai -
                        else:
                            com_ = 0
                    else:
                        if ( com_ == 1 ):
                            if ( char == '-' ):
                                com_ += 1 # J'ai --
                            else:
                                com_ = 0
                        else:
                            if ( com_ == 2 ):
                                if ( char == '>' ):
                                    com = (1==0) # J'ai -->
                                    com_ = 0
                                    temp = ""
                                else:
                                    com_ = 0
                    # Donc je regarde si le lien est ici !
                    temp += char
     
                    if ( check_quant_in(id,temp)>0 ):
                        #print '<!--', temp
                        print  'Liens dans un commentaire ==> ' , url
            # Cacher !
     
    print 'Fin de la verif'
    http.py ( même répertoire )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    import urllib
     
     
    def http_get(url):
        sock = urllib.urlopen(url)
        htmlSource = sock.read()
        sock.close()
        return htmlSource
    Derniére chose : peut-on lancer des scripts py avec php / java ( je sais juste le faire en c ) et peut-on communiquer avec les autres programmes. ( avec des pipes par exemple ? )

    merci

Discussions similaires

  1. script synchronisation le transfert des fichier
    Par smailinfo dans le forum Linux
    Réponses: 2
    Dernier message: 12/04/2015, 11h44
  2. [Système] Appel script perl, pas de création de fichier
    Par trollanfer dans le forum Langage
    Réponses: 2
    Dernier message: 11/12/2008, 22h08
  3. Réponses: 2
    Dernier message: 14/11/2008, 09h27
  4. script de synchronisation de systéme de fichier
    Par adami_1 dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 30/05/2008, 20h31
  5. Le système de fichiers utilisé ?
    Par KORTA dans le forum C
    Réponses: 2
    Dernier message: 17/09/2003, 21h46

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