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 :

Changer le format date de retour fonction FTP.dir()


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Touche à tout
    Inscrit en
    Mai 2017
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Touche à tout

    Informations forums :
    Inscription : Mai 2017
    Messages : 479
    Par défaut Changer le format date de retour fonction FTP.dir()
    Bonjour,

    J'utilise la fonction FTP.dir() pour lister dossiers et fichiers.

    Tout fonctionne correctement sauf que je voudrais avoir un format d'affichage différent de celui de la fonction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    07-23-18  05:27PM       <DIR>          S12_12
    07-27-18  04:00AM       <DIR>          S14_14
    08-03-18  09:30AM       <DIR>          S16_16
    07-13-18  11:14AM       <DIR>          S18_18
    07-30-18  05:06PM       <DIR>          S22_22
    08-02-18  05:55AM       <DIR>          S24_24
    08-03-18  04:02PM       <DIR>          S34_34
    11-19-13  04:02PM       <DIR>          S37_37
    07-23-18  06:13PM       <DIR>          S38_38
    Je voudrais avoir le format dd/mm/yyyy et le format des heures au format français.

    Merci par avance.

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 737
    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 737
    Par défaut
    Salut,

    Citation Envoyé par Supernatural Voir le message
    Je voudrais avoir le format dd/mm/yyyy et le format des heures au format français.
    FTP.dir ne sait pas le faire par contre vous pouvez récupérer cette sortie et la formater à votre guise (ou regarder s'il n'existe pas une bibliothèque FTP qui faciliterait ce travail là car ce format de sortie là peut varier selon le serveur).

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

  3. #3
    Membre éclairé
    Homme Profil pro
    Touche à tout
    Inscrit en
    Mai 2017
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Touche à tout

    Informations forums :
    Inscription : Mai 2017
    Messages : 479
    Par défaut
    Très bien, par contre j'en profite pour une autre question: comment faire pour avoir uniquement le nom des dossiers? Je sais qu'il exite 'NLST' , mais ça ne fonctionne pas lorsque je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LDS.dir(FTP_PATH, 'NLST')

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 737
    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 737
    Par défaut
    Citation Envoyé par Supernatural Voir le message
    Très bien, par contre j'en profite pour une autre question: comment faire pour avoir uniquement le nom des dossiers? Je sais qu'il exite 'NLST' , mais ça ne fonctionne pas lorsque je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LDS.dir(FTP_PATH, 'NLST')
    'NSLT' est une commande FTP. Vous ne pouvez pas l'utiliser en paramètre de la fonction .dir....
    Mais vous pouvez faire directement .nslt().
    Lisez la documentation du module.

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

  5. #5
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    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 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Citation Envoyé par Supernatural Voir le message
    comment faire pour avoir uniquement le nom des dossiers?
    Comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        lignes = ftp.nlst()
        for ligne in lignes:
            print(ligne)
    Mais la méthode mlsd apporte beaucoup plus d'informations sous forme d'un dictionnaire de propriétés pour chaque nom de fichier ou de répertoire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        lignes = ftp.mlsd()
        for ligne in lignes:
            print(ligne)
    A noter que la date (genre: "20130527140912") devrait permettre une modification de format plus facile.

  6. #6
    Membre éclairé
    Homme Profil pro
    Touche à tout
    Inscrit en
    Mai 2017
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Touche à tout

    Informations forums :
    Inscription : Mai 2017
    Messages : 479
    Par défaut
    J'ai bien tenté toutes les solutions apportées ici, mais je suis toujours confronté à un problème:

    FTP.mlsd() -> ne fonctionne pas, pas de retour ni d'erreur

    FTP.dir() -> Fonctionne parfaitement, mais je ne veux que le nom du dossier

    FTP.nlst() -> ne fonctionne pas, pas de retour ni d'erreur

    donc vous comprendrez mon désarroi... je ne sais plus sur quel pied danser...

    Ci joint mon 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
    65
    66
    67
    68
    69
     
     
    from configparser import ConfigParser
    from tkinter import *
    from tkinter import ttk
    from tkinter.ttk import *
    from tkinter import font
    from tkinter import Listbox
    import ftplib
     
    #Application parameters
    #FTP parametrers
    CFG_FILE = ConfigParser()
    CFG_FILE.optionxform = str
    CFG_FILE.read('ini/application.ini')
     
    APPLICATION_NAME=CFG_FILE.get('APPLICATION_PARAMETERS', 'APPLICATION_NAME')
    FTP_USER=CFG_FILE.get('SECRET', 'USER')
    FTP_PASSWORD=CFG_FILE.get('SECRET', 'PASSWORD')
    #END FTP
     
    LINE_NAME         = CFG_FILE.options('NETWORK_PARAMETERS')
    NUMBER_OF_LINE    = len(LINE_NAME)
     
    #Functions
    def FTP_GET_folder():
        print(ComboBox_linechoice.get())
        SELECTED_LINE=ComboBox_linechoice.get()
        #ftp connexion
        FTP_PARAMETERS=CFG_FILE.get('NETWORK_PARAMETERS', SELECTED_LINE)
        SERVER_NAME, PORT, FTP_PATH = FTP_PARAMETERS.split(";")
     
        print('Connexion to '+ SERVER_NAME + ' on port ' + PORT + ', path: ' + FTP_PATH)
     
        LDS = ftplib.FTP()
        LDS.connect(SERVER_NAME, int(PORT))
        LDS.login(FTP_USER, FTP_PASSWORD)
        LDS.dir(FTP_PATH)
        LDS.close()
    #End of functions
     
    #MainGUI
    MainGUI = Tk()
    MainGUI.title(APPLICATION_NAME)
    MainGUI.iconbitmap(r'ini/graph_icon.ico')
    MainGUI.geometry('1200x600')
    Mainfont = font.Font(MainGUI, family='Courier new', size='10')
     
    #LabelFrame for curve selection
    labelframe = LabelFrame(MainGUI, text="SELECTION",  width='20')
    labelframe.grid(padx=5, pady=5)
     
    #Label for ComboBox line choice
    Label_linechoice = Label(MainGUI, text="Select a line:", font=Mainfont).grid(row=0, padx=5, pady=5, sticky=W)
     
    #ComboBox line selection
    ComboBox_linechoice = ttk.Combobox(values=LINE_NAME, state="readonly", font=Mainfont)
     
    #ComboBox_linechoice.set('Select a line')
    ComboBox_linechoice.bind('<<ComboboxSelected>>', lambda e: FTP_GET_folder()) #print(ComboBox_linechoice.get()))
    ComboBox_linechoice.grid(row=1, padx=5)
     
    #Label for ListView cell choice
    Label_cellchoice = Label(MainGUI, text="Select a cell:", font=Mainfont).grid(row=2, padx=5, pady=5, sticky=W)
     
    Cell_listbox=Listbox(MainGUI)
    Cell_listbox.grid(padx=5, column=0, sticky='w')
     
    MainGUI.mainloop()
    Résultat avec:

    -LDS.dir():
    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
    03-18-13  05:23PM       <DIR>          S10_10
    07-11-18  02:53PM       <DIR>          S12_12
    07-30-18  01:07PM       <DIR>          S14_14
    08-03-18  06:12AM       <DIR>          S16_16
    08-03-18  09:50AM       <DIR>          S18_18
    08-03-18  05:50PM       <DIR>          S22_22
    08-03-18  02:08PM       <DIR>          S24_24
    07-10-18  10:23AM       <DIR>          S34_34
    07-31-18  03:23PM       <DIR>          S38_38
    08-03-18  09:18AM       <DIR>          S40_40
    08-02-18  06:41AM       <DIR>          S44_44
    08-01-18  05:41PM       <DIR>          S46_46
    06-04-18  11:22AM       <DIR>          S50_50
    08-06-18  10:57AM       <DIR>          S52_52
    08-06-18  09:11AM       <DIR>          S66_66
    LDS.nlst(FTP_PATH):

    Pas de retour (aucun message d'erreur)

  7. #7
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    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 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Tous les serveurs ne sont pas configurés à l'identique, et il est précisé dans la doc de ftplib que mlsd n'est pas forcément supporté ("If your server supports the command, mlsd() offers a better API."). Par contre, nlst devrait l'être.

    Je te suggère d'essayer avec un serveur ftp public:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        serveurftp = "test.rebex.net"
        nom = "demo"
        mdp = "password"
        repdest = "/"
        passif = True
    Réponse de la méthode Dir:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    10-27-15  04:46PM       <DIR>          pub
    04-08-14  04:09PM                  403 readme.txt
    Réponse de la méthode nlst:

    Réponse de la méthode mlsd:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ftplib.error_perm: 500 'MLSD ': command not understood.
    Autrement dit, le serveur répond qu'il ne comprend la requête "MLSD"

    Un autre serveur pourra donner une réponse différente. Chez mon hébergeur, les 3 méthodes donnent une réponse correcte.

  8. #8
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    salut,

    Citation Envoyé par Supernatural Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    07-23-18  05:27PM       <DIR>          S12_12
    07-27-18  04:00AM       <DIR>          S14_14
    08-03-18  09:30AM       <DIR>          S16_16
    (...)
    si on s'en tient au format que tu donnes dans ton exemple, et en guise de solution "bien, mais pas top" tu peux peut-être essayer un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cb = lambda s: print('{}/{}/20{}'.format(s[3:5], s[0:2], s[6:]))
    ftp.dir(cb)
    comme dit wiztricks, la même astuce ne marchera pas forcément avec un autre serveur FTP

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

Discussions similaires

  1. Changer le format date pour BDD
    Par GaMi95 dans le forum C#
    Réponses: 3
    Dernier message: 08/01/2014, 12h47
  2. [Vxi3] Changer le format "date de situation"
    Par PPN83 dans le forum Webi
    Réponses: 3
    Dernier message: 29/11/2012, 14h31
  3. Changer le format date par défaut
    Par kika10 dans le forum Administration
    Réponses: 0
    Dernier message: 07/03/2012, 13h17
  4. changer le format date dans un maskedit
    Par kroma23 dans le forum Débuter
    Réponses: 5
    Dernier message: 10/11/2011, 09h22
  5. comment changer le format date en shell ?
    Par sajodia dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 03/06/2008, 20h10

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