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 :

Problème avec EXECFILE


Sujet :

Python

  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 237
    Par défaut Problème avec EXECFILE
    Bonjour à tous,

    J'ai fais avec votre aide un script pour dézipper des fichiers dont le code est ci-dessous.
    Je l'ai intégrer dans un script que j'utilise maintenant quotidiennement depuis plusieurs semaine et le lance en utilisant execfile(), hors depuis ce matin il ne fonctionne plus lorsque je le lance depuis mon script via execfile(), il continue néanmoins à fonctionner correctement lorsque je le lance individuellement

    Voici le 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
    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
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
     
    import os,gzip,locale,time
     
     
    locale.setlocale(locale.LC_ALL,'') # permet de savoir en quelle langue est le PC
    temp=time.strftime('%d/%m/%Y-%H:%M:%S ') # formatage de la date
     
    def upzipFiles():
        try :
            dirList=os.listdir(repEsclave)
            print dirList
            for filename in dirList:
              print filename
              fileObj = gzip.GzipFile(repEsclave + filename, 'rb');
              fileObjOut = file(repEsclave + filename.replace('.gz',''), 'wb');
              while 1:
                 lines = fileObj.readline()
                 if lines == '': break
                 fileObjOut.write(lines)
              fileObj.close()
              fileObjOut.close()
        except BaseException: # traitement d'une exception quelque soit la cause
            path = 'xxxx'
            fileR = open(path+'ErreursTraitement.txt','r') # ouverture du fichier des erreurs
            text = fileR.read()
            textInsert = temp+' Module 3dgzip.py : Erreur avec le fichier : '+ filename +'\n'+'' # texte à ajouter
            textInsert = temp+' Module 3dgzip.py  '+'\n'+'' # texte à ajouter
            fileW = open(path+'ErreursTraitement.txt','w')
            fileW.write(textInsert + text) # écriture
            fileW.close()
     
    # extraction des donnees z
    repEsclave = ''
    upzipFiles()
    # suppression des fichiers inutiles
    for fichier in os.listdir(repEsclave):
        if '.gz' in fichier :
            os.remove(os.path.join(repEsclave,fichier))
     
    # extraction des donnees a
    repEsclave = '//sficanglet02//Photovoltaique//INEOSOL1//TEMP//IO//'
    upzipFiles()
    # suppression des fichiers inutiles
    for fichier in os.listdir(repEsclave):
        if '.gz' in fichier :
            os.remove(os.path.join(repEsclave,fichier))
     
    # extraction des donnees b
    repEsclave = '//sficanglet02//Photovoltaique//INEOSOL1//TEMP//TIC//'
    upzipFiles()
    # suppression des fichiers inutiles
    for fichier in os.listdir(repEsclave):
        if '.gz' in fichier :
            os.remove(os.path.join(repEsclave,fichier))
     
    # extraction des donnees c
    repEsclave = '//sficanglet02//Photovoltaique//INEOSOL1//TEMP//IRR//'
    upzipFiles()
    # suppression des fichiers inutiles
    for fichier in os.listdir(repEsclave):
        if '.gz' in fichier :
            os.remove(os.path.join(repEsclave,fichier))
    Lorsque je supprime le traitement des exceptions j'ai le message suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      File "3dgzip.py", line 17, in upzipFiles
        fileObjOut = file(repEsclave + filename.replace('.gz',''), 'wb');
    TypeError: 'file' object is not callable
    Merci de votre aide

  2. #2
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 327
    Par défaut
    Bonjour,

    Juste une question peut-etre que cela est normal, mais pourquoi ces ";" aux lignes 16 et 17 ?

  3. #3
    Membre émérite
    Avatar de D[r]eadLock
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    504
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 504
    Par défaut
    Dans ton script python qui appelle celui-ci, n'as tu pas une variable qui s'appelle file ? Auquel cas c'est bien à cette variable (et non au built-in file()) qui est pris en compte (d'où le message d'erreur).

    Quelques remarques sur le script en lui-même:
    - l'indentation est douteuse
    - ce serait bien de passer repEsclave en paramètre de upzipFiles()
    - on peut utiliser pour éviter d'avoir à gérer '/' à la fin du nom de répertoire
    - ce serait bien de mettre le 'clean-up' dans la fonction upzileFiles() et d'appeler comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for path in ['', '//sficanglet02//Photovoltaique//INEOSOL1//TEMP//IO//', '//sficanglet02//Photovoltaique//INEOSOL1//TEMP//TIC//', '//sficanglet02//Photovoltaique//INEOSOL1//TEMP//IRR//']:
        upzipFiles(path)

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 237
    Par défaut
    Je vous remercie pour vos réponses. Je suis très perplexe car tout refonctionne correctement sans aucune modification du script. J'avoue ne pas comprendre le pourquoi du comment...

    Je vais prendre en compte les remarques de D[r]eadLock pour améliorer mon code

    A suivre.

    Faut il basculer en résolu dans un cas comme celui-ci ?

    Merci de votre aide.

  5. #5
    Membre émérite
    Avatar de D[r]eadLock
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    504
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 504
    Par défaut
    Citation Envoyé par jouclar Voir le message
    Faut il basculer en résolu dans un cas comme celui-ci ?
    À priori je dirais oui, pour éviter qu'un membre lise le message alors qu'il n'y a plus de problème. Si ce problème re-surgit, je ne sais pas si on peut enlever un tag résolu, mais au pire on peut soit lier vers le post original, soit dupliquer le problème.

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

Discussions similaires

  1. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  2. Problème avec [b]struct[/b]
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 2
    Dernier message: 17/07/2002, 10h25
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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