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 :

Un ficher vide


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Expert sécurité informatique
    Inscrit en
    Juillet 2020
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Expert sécurité informatique

    Informations forums :
    Inscription : Juillet 2020
    Messages : 142
    Par défaut Un ficher vide
    Bonjour à tous,

    Je suis perdu, j'ai créé un petit code ce matin et je n'arrive pas situer mon erreur quand je print je vois le résultat, mais quand j'essaye d'écrire dans un fichier, se ficher est vide.

    Voici 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
    # coding: utf-8
    import cx_Oracle
    import os.path
    import os
    import datetime
    import os.path, time
    import shutil
    import smtplib
    from email.mime.multipart import MIMEMultipart
    from email.mime.text import MIMEText
    from email import encoders
     
    def requete_to_stock_USI(taille,article,couleur):
    #Nous créeons notre requête SQL ici
     sql= "SELECT * FROM prod_stok where QTE_"+ taille +" = 0 and code_art_com =:article and code_colm=:couleur and code_lieu= 'USI' and typ_enrg = '0'"
     try:
         #Connexion à la base de donnée
         with cx_Oracle.connect("user", "user", "base de donnée") as connection:
             with connection.cursor() as cursor:
                 #Nous excutons la requête ici
                 cursor.execute(sql,[article,couleur])
                 with open('alert.txt','w+') as file:
                     for row in cursor:
                         file.write(str(row))
                 file.close()
     #Cette partie de code nous renvois les erreurs de la requête s'il y en a.
     except cx_Oracle.Error as error:
         print(error)
     
    def alert_to_stock_USI():
    	liste_best_articles ={'0018':'300','0046':'300','5046':'300','0004':'300'}
    	for i,k in liste_best_articles.items():
    		for y in range(12):
    			if y > 1:
    				alert = requete_to_stock_USI(str(y),i,k)
    Merci par avance de vos reponses.

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

    Si le fichier est vide, il faut commencer par s'assurer qu'on écrit bien des choses dedans i.e. que le "for row in cursor:" produit des "rows"....

    Un simple print fait l'affaire.

    Puis on s'assure que le "alert.txt" contient bien ce qui a été écrit (en remplaçant le file.close() qui ne sert à rien par print(open('alert.txt').read()). Si c'est le cas, c'est qu'on ne regarde pas le bon fichier (après l'exécution).

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

  3. #3
    Membre confirmé
    Homme Profil pro
    Expert sécurité informatique
    Inscrit en
    Juillet 2020
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Expert sécurité informatique

    Informations forums :
    Inscription : Juillet 2020
    Messages : 142
    Par défaut
    Merci de ta réponse, il y a bien des rows et quand je print(open('alert.txt').read()) il y a bien quelque choses comme tu peux le constater ci-dessous:

    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
    ('USI', 'CO', '00P', '0018', '300', None, '0', '1', 0, 0, 0, 0, 0, 731, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, None, None, None)
    ('USI', 'CO', '00P', '0018', '300', None, '0', '1', 0, 0, 0, 0, 0, 731, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, None, None, None)
    ('USI', 'CO', '00P', '0018', '300', None, '0', '1', 0, 0, 0, 0, 0, 731, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, None, None, None)
    ('USI', 'CO', '00P', '0018', '300', None, '0', '1', 0, 0, 0, 0, 0, 731, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, None, None, None)
     
    ('USI', 'CO', '00P', '0018', '300', None, '0', '1', 0, 0, 0, 0, 0, 731, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, None, None, None)
    ('USI', 'CO', '00P', '0018', '300', None, '0', '1', 0, 0, 0, 0, 0, 731, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, None, None, None)
    ('USI', 'CO', '00P', '0018', '300', None, '0', '1', 0, 0, 0, 0, 0, 731, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, None, None, None)
    ('USI', 'CO', '00P', '0018', '300', None, '0', '1', 0, 0, 0, 0, 0, 731, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, None, None, None)
    ('USI', 'CO', '00P', '0018', '300', None, '0', '1', 0, 0, 0, 0, 0, 731, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, None, None, None)
     
     
    ('USI', 'CO', '00P', '0046', '300', None, '0', '1', None, 5, 8, 0, 0, 731, 0, 6, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None)
    ('USI', 'CO', '00P', '0046', '300', None, '0', '1', None, 5, 8, 0, 0, 731, 0, 6, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None)
     
    ('USI', 'CO', '00P', '0046', '300', None, '0', '1', None, 5, 8, 0, 0, 731, 0, 6, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None)
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    ('USI', 'CO', '00P', '0004', '300', None, '0', '1', 42, None, 0, None, None, 731, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None)('USI', 'LI', '00P', '0004', '300', None, '0', '1', 42, None, 0, None, None, 731, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None)('USI', 'MB', '00P', '0004', '300', None, '0', '1', 42, None, 0, None, None, 731, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None)

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

    Citation Envoyé par azaouali Voir le message
    Merci de ta réponse, il y a bien des rows et quand je print(open('alert.txt').read()) il y a bien quelque choses comme tu peux le constater ci-dessous:
    Donc le fichier n'est pas vide... (après la boucle qui le remplit).
    Est-ce que vous regardez le "bon fichier" ou est-ce que son contenu est vidé plus tard (open(..., 'w') qui traîne suffit)?

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

  5. #5
    Membre confirmé
    Homme Profil pro
    Expert sécurité informatique
    Inscrit en
    Juillet 2020
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Expert sécurité informatique

    Informations forums :
    Inscription : Juillet 2020
    Messages : 142
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,



    Donc le fichier n'est pas vide... (après la boucle qui le remplit).
    Est-ce que vous regardez le "bon fichier" ou est-ce que son contenu est vidé plus tard (open(..., 'w') qui traîne suffit)?

    - W
    tyrtamos a vu juste, il faillait le 'a' au lieu de 'w+'

  6. #6
    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,

    S'il s'agit d'écrire dans le fichier "alert.txt", sans effacer ce qu'il y avait avant, ce n'est pas "w+" mais "a" qu'il faut. Le mode "w+" permet seulement de lire en plus d'écrire, et on ne lit rien ici (voir la doc).

    Et la ligne "file.close()" est inutile: avec un "with open(...", la fermeture se fait automatiquement à la sortie du bloc indenté.

  7. #7
    Membre confirmé
    Homme Profil pro
    Expert sécurité informatique
    Inscrit en
    Juillet 2020
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Expert sécurité informatique

    Informations forums :
    Inscription : Juillet 2020
    Messages : 142
    Par défaut
    Merci mais je ne comprend au début j'avais bien bien 'a' et ça n'a pas fonctionner, je ne comprend rien en tout cas merci.

  8. #8
    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
    Petit exemple pour le principe:

    Au départ, le fichier "toto.txt" n'existe pas.

    On exécute:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    with open("toto.txt", "a", encoding="utf-8") as file:
        file.write("Bonjour!\n")
     
    with open("toto.txt", "a", encoding="utf-8") as file:
        file.write("Ça va?\n")
    Le fichier "toto.txt" existe maintenant, et contient:

    Donc:
    le fichier qui n'existait pas a bien été créé par le 1er open.
    le 1er open a écrit la 1ère ligne, puis a fermé la connexion
    le 2ème open a écrit la 2ème ligne puis a fermé la connexion

    Si ton programme ne fait pas ça, c'est qu'il y a autre chose à trouver...

  9. #9
    Membre confirmé
    Homme Profil pro
    Expert sécurité informatique
    Inscrit en
    Juillet 2020
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Expert sécurité informatique

    Informations forums :
    Inscription : Juillet 2020
    Messages : 142
    Par défaut
    Citation Envoyé par tyrtamos Voir le message
    Petit exemple pour le principe:

    Au départ, le fichier "toto.txt" n'existe pas.

    On exécute:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    with open("toto.txt", "a", encoding="utf-8") as file:
        file.write("Bonjour!\n")
     
    with open("toto.txt", "a", encoding="utf-8") as file:
        file.write("Ça va?\n")
    Le fichier "toto.txt" existe maintenant, et contient:

    Donc:
    le fichier qui n'existait pas a bien été créé par le 1er open.
    le 1er open a écrit la 1ère ligne, puis a fermé la connexion
    le 2ème open a écrit la 2ème ligne puis a fermé la connexion

    Si ton programme ne fait pas ça, c'est qu'il y a autre chose à trouver...

    Mon programme le fait bien mais sans les espaces entre les rows

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

Discussions similaires

  1. [PowerShell] crée un ficher entete avec converto-csv si resultat vide
    Par markham dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 06/04/2020, 18h24
  2. Test si une ligne excel est vide avant d'importer le ficher
    Par skillipo dans le forum VBA Access
    Réponses: 3
    Dernier message: 30/11/2007, 11h25
  3. [DOM] Balise vide...
    Par carlierd dans le forum Format d'échange (XML, JSON...)
    Réponses: 7
    Dernier message: 02/05/2003, 18h28
  4. [] Datagrid vide après modification des propriétés
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 20/09/2002, 16h37
  5. [CR] Avoir seulement une page blanche qd la base est vide???
    Par littleChick dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 13/08/2002, 18h26

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