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 :

fichier temporaires en mémoire


Sujet :

Python

  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur développement de composants
    Inscrit en
    Décembre 2019
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement de composants

    Informations forums :
    Inscription : Décembre 2019
    Messages : 113
    Par défaut fichier temporaires en mémoire
    Bonjour,
    pour ouvrir un fichier quelconque depuis python j'utilise la commande suivante:
    cette ligne est bien pratique pour moi puisqu'elle utilise, dans mon cas, directement excel pour m'ouvrir le csv.

    j'aimerais pourvoir faire de même avec un fichier non enregistré (un fichier temporaire donc).
    Par exemple si je me retrouve avec une liste de valeur sous python, j'aimerais pouvoir ouvrir excel et y écrire ma liste ligne par ligne MAIS sans passer par la création d'un fichier enregistré en dur quelque part sur le disque. Est-il possible de fonctionner uniquement en mode mémoire?

    là je suis en train de regarder du coté de tempfile... si vous avez des orientations/conseils/bonnes pratiques je suis preneur.

    NB: Pourquoi un tel besoin? c'est simplement pour imprimer des datas (avec de la mise en page typée excel).

    merci

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

    Citation Envoyé par clement_74 Voir le message
    Est-il possible de fonctionner uniquement en mode mémoire?
    EXCEL est un programme externe à l'application (écrite avec Python) => on ne peut pas (facilement et de façon documentée) partager de la mémoire avec...

    Par contre, on peut commander EXCEL avec pywin32 (le client COM) pour échanger des messages/données sans les écrire sur disque.

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

  3. #3
    Invité
    Invité(e)
    Par défaut
    Salut !

    Je ne pense pas que ce soit possible...

    Pourquoi tu ne veux pas enregistrer ton fichier ? Tu peux le supprimer une fois fini.

    Attends des conseils plus avisés !

    PS : Effectivement, Wiz toujours au taquet !
    https://pythonexcels.com/python/2009...ng-with-python
    https://jpereiran.github.io/articles...h-pywin32.html

  4. #4
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 198
    Par défaut
    Hello,
    Citation Envoyé par clement_74 Voir le message
    Par exemple si je me retrouve avec une liste de valeur sous python, j'aimerais pouvoir ouvrir excel et y écrire ma liste ligne par ligne MAIS sans passer par la création d'un fichier enregistré en dur quelque part sur le disque.
    tu peux utiliser le paquet openpyxl pour lire et écrire dans un fichier excel (xlsx, xlst , xlsm)
    Ami calmant, J.P

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 816
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 816
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par clement_74 Voir le message
    cette ligne est bien pratique pour moi puisqu'elle utilise, dans mon cas, directement excel pour m'ouvrir le csv.
    Pas tout à fait. Elle demande à ton OS d'ouvrir le fichier. Et c'est l'OS qui, ayant enregistré "csv=excel", lance alors excel.
    Tout ça pour dire que ce n'est ni garanti ni portable.

    Citation Envoyé par clement_74 Voir le message
    Là je suis en train de regarder du coté de tempfile.
    C'est juste une lib permettant de créer des fichiers temporaires avec des noms uniques (pour éviter les collisions si par exemple ton programme est lancé plusieurs fois). Elle ne t'aidera pas à communiquer avec excel

    Citation Envoyé par clement_74 Voir le message
    NB: Pourquoi un tel besoin? c'est simplement pour imprimer des datas (avec de la mise en page typée excel).
    Et tu ne voudrais pas plutôt écrire tes datas dans un fichier pdf avec de la mise en page typée "ton progamme" ? Ainsi tu n'aurais ensuite qu'à imprimer le PDF. Et écrire en PDF ça Python il sait bien le faire.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 198
    Par défaut
    Hello,
    Citation Envoyé par clement_74 Voir le message
    j'aimerais pouvoir faire de même avec un fichier non enregistré (un fichier temporaire donc).
    Par exemple si je me retrouve avec une liste de valeur sous python, j'aimerais pouvoir ouvrir excel et y écrire ma liste ligne par ligne MAIS sans passer par la création d'un fichier enregistré en dur quelque part sur le disque. Est-il possible de fonctionner uniquement en mode mémoire?
    là je suis en train de regarder du coté de tempfile... si vous avez des orientations/conseils/bonnes pratiques je suis preneur.
    NB: Pourquoi un tel besoin? c'est simplement pour imprimer des datas (avec de la mise en page typée excel).
    Qu'entends-tu par mise en page Excel ?
    Parce qu'avec Pandas on peut écrire dans un fichier html avec mise en forme par css.
    Voici un exemple qui lit un fichier csv dans Pandas et le sort dans un fichier html en utilisant un fichier css pour la mise en forme. Le fichier html généré est ouvert par le navigateur par défaut dans lequel on peut faire alors une impression. Le fichier html est temporaire et est supprimé à la fin du programme (après appui sur la touche <esc>). Les paquets nécessaires sont :
    pandas, tempfile ,webbrowser et keyboard.
    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
    import pandas as pd
    import tempfile
    import webbrowser
    import keyboard
     
     
    df = pd.read_csv('d:/temp/schools.csv', sep=',',usecols=range(5))
    schools = df.to_html(classes='mystyle',justify='center')
    html_string = '''
    <html>
      <head><title>HTML Pandas Dataframe avec CSS</title></head>
      <link rel="stylesheet" type="text/css" href="df_style.css"/>
      <body>
        {table}
      </body>
    </html>.
    '''
    # Sortie du fichier html
    t = tempfile.NamedTemporaryFile(suffix='.html',mode='w+', encoding='utf-8',delete=False)
    newhtml = html_string.format(table=df.to_html(classes='mystyle'))
    t.write(newhtml)
    t.close()
    webbrowser.open('file://' + t.name,autoraise = True)
    print("taper <esc> pour effacer le fichier temporaire " + t.name)
    keyboard.wait("esc")  # wait for escape key to be pressed
    t.delete
    Voici le contenu du fichier csv d'entrée schools.csv :
    Code text : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Last Name,First Name,Address,City,State,Zip,Occupation,Employer,Date,Amount
    Lidstad,Dick & Peg,62 Mississippi River Blvd N,Saint Paul,MN,55104,retired,,10/12/2012,60.00
    Strom,Pam,1229 Hague Ave,St. Paul,MN,55104,,,9/12/2012,60.00
    Seeba,Louise & Paul,1399 Sheldon St,Saint Paul,MN,55108,BOE,City of Saint Paul,10/12/2012,60.00
    Schumacher / Bales,Douglas L. / Patricia,948 County Rd. D W,Saint Paul,MN,55126,,,10/13/2012,60.00
    Abrams,Marjorie,238 8th St east,St Paul,MN,55101,Retired,Retired,8/8/2012,75.00
    Crouse / Schroeder,Abigail / Jonathan,1545 Branston St.,Saint Paul,MN,55108,,,10/6/2012,75.00
    O'Connell,Jean,888 Ivy Ave W.,Saint Paul,MN,55117,,,9/30/2012,75.00
    Reese,Cheri A,981 Davern St.,Saint Paul,MN,55116,Public Relations,Far North Spirits,10/3/2012,75.00

    le contenu du fichier css df_style.css à mettre dans le répertoire temporaire :
    Code css : 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
    /* includes alternating gray and white with on-hover color */
     
     
    .mystyle {
        font-size: 11pt; 
        font-family: Arial;
        border-collapse: collapse; 
        border: 1px solid silver;
    }
     
     
    .mystyle th {
       text-align: center;  
    }
     
     
    .mystyle td, th {
        padding: 5px;
    }
     
     
    .mystyle tr:nth-child(even) {
        background: #E0E0E0;
    }
     
     
    .mystyle tr:hover {
        background: silver;
        cursor: pointer;
    }
    et voici ce que le fichier html donne dans chrome :

    Nom : PandasHTML.PNG
Affichages : 368
Taille : 33,0 Ko

    Nom : PandasHTMLPreview.PNG
Affichages : 374
Taille : 59,7 Ko

    Ami calmant, J.P

  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

    Un fichier temporaire, c'est un fichier sur disque. Cela ne correspond donc pas à la recherche d'un fichier en mémoire.

    Pour un fichier en mémoire, voir le module io, et en particulier io.StringIO:
    https://docs.python.org/fr/3/library...ml#io.StringIO

    Ce genre de fichier se manipule avec les mêmes outils que les fichiers sur disque (open, close, seek, ...).

    Mais je n'ai jamais essayé de transmettre un tel fichier à un programme comme Excel...

  8. #8
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 198
    Par défaut
    Citation Envoyé par tyrtamos Voir le message
    Pour un fichier en mémoire, voir le module io, et en particulier io.StringIO:
    https://docs.python.org/fr/3/library...ml#io.StringIO
    Ce genre de fichier se manipule avec les mêmes outils que les fichiers sur disque (open, close, seek, ...).
    Mais je n'ai jamais essayé de transmettre un tel fichier à un programme comme Excel...
    je crois que le souci c'est que l'on ne peut pas utiliser le fichier en dehors de l'application qui l'a créé.

    Ami calmant, J.P

  9. #9
    Membre confirmé
    Homme Profil pro
    Ingénieur développement de composants
    Inscrit en
    Décembre 2019
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement de composants

    Informations forums :
    Inscription : Décembre 2019
    Messages : 113
    Par défaut
    Bonjour,
    merci à tous pour vos réponses et orientations!
    en effet, j'arrive à piloter excel depuis python donc par rapport à ma question initiale, la réponse est trouvée :-)

    par contre l'alternative de directement créer le pdf dans python et de ne finalement plus passer par excel m'a bien intéressé!
    j'ai utilisé fpdf pour créer les pdf en question et c'est finalement bien simple de faire quelque chose de sympa! il y a d'autre librairies plus adaptées? ( parce que je n'arrive pas à faire tourner fpdf ou fpdf2 sous spyder 3.8...)

    sinon pour la dernière question: qu'est ce que j'entends par "mise en page excel", c'est tout simplement un tableau que je veut créer, avec des cellules colorées, un peu de texte, quelques données et des "cellules fusionnées".

    la solution passant par pandas, tempfile ,webbrowser et keyboard, je n'ai pas pris le temps de la comprendre mais je la garde sous le coude (html et css sont, pour moi encore un peu exotiques... mais j'y arriverai :-)).

    merci :-)

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

Discussions similaires

  1. fichier mappé en mémoire
    Par WinBernardo dans le forum Delphi
    Réponses: 7
    Dernier message: 01/12/2006, 09h38
  2. [Applet] Créer un fichier temporaire
    Par leminipouce dans le forum Applets
    Réponses: 21
    Dernier message: 28/07/2005, 16h16
  3. [Tomcat]Tomcat Fichier temporaire
    Par kitiara999 dans le forum Tomcat et TomEE
    Réponses: 5
    Dernier message: 19/07/2005, 23h13
  4. Y as il des fichiers temporaires sous builder
    Par Moutonstar dans le forum C++Builder
    Réponses: 2
    Dernier message: 12/12/2004, 14h24
  5. Comment changer le répertoire des fichiers temporaires ?
    Par devdev dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 01/09/2004, 14h18

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