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

Langages de programmation Discussion :

Quel langage de programmation choisir pour éditer un fichier TXT ?


Sujet :

Langages de programmation

  1. #1
    Membre habitué
    Homme Profil pro
    Assistant technique
    Inscrit en
    Février 2007
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Assistant technique
    Secteur : Services à domicile

    Informations forums :
    Inscription : Février 2007
    Messages : 336
    Points : 197
    Points
    197
    Par défaut Quel langage de programmation choisir pour éditer un fichier TXT ?
    Bonjour à tous,

    J'ai un fichier TXT de 45000 lignes ayant cette structure :

    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
    --  Générer SQL 
    --  Version :                   	V7R2M0 140418 
    --  Générée le :              	17/05/18 10:48:40 
    --  Base données relation :    	PH 
    --  Option normes :          	DB2 for i 
    CREATE TABLE APRD_DATA.CLIENTPRE ( 
    	F1 DECIMAL(9, 0) NOT NULL DEFAULT 0 , 
    	F2 DECIMAL(6, 0) NOT NULL DEFAULT 0 , 
    	F3 CHAR(67) CCSID 297 NOT NULL DEFAULT '' )   
    	; 
      
    LABEL ON TABLE APRD_DATA.D_REAC 
    	IS 'Remsie action' ; 
      
    LABEL ON COLUMN APRD_DATA.D_REAC 
    ( REAC_ID_RE_DS IS 'Id remise' , 
    	REAC_LBR_ACTION_REAC IS 'Action sur remise' , 
    	REAC_QTE_ACTION_REAC IS 'Quantité' ) ; 
    ....
    Le traitement automatique que je souheterai effectuer est le suivant :

    Supprimer tous les blocs qui ne commence pas par "LABEL".

    Ma question :

    Quel est la solution la plus simple et rapide qui permet de réaliser ce genre de chose s'il vous plaît ?

    Voici mon environnement de travail :

    Windows 10, avec les logiciels suivants qui sont installés :
    - Visual Studio (je ne me sers que de la partie SSIS)
    - PowerShell (jamais utilisé)
    - Notepad++ (pour éditer des requêtes SQL)

    Je souhaiterai juste une piste, ensuite je me débrouillerai pour apprendre à le faire tout seul.

    Car je me dis qu'avec les outils qui sont à ma dispositions il y a forcément un moyen de le faire (sans forcément devoir apprendre C# lol)

    Merci par avance.

    Cordialement.

  2. #2
    Expert éminent
    Avatar de Pyramidev
    Homme Profil pro
    Tech Lead
    Inscrit en
    Avril 2016
    Messages
    1 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Tech Lead

    Informations forums :
    Inscription : Avril 2016
    Messages : 1 493
    Points : 6 207
    Points
    6 207
    Par défaut
    Bonjour,

    Je conseille Python.

    Démonstration :
    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
    """
    Copier le contenu d'un fichier 'input.txt' vers un fichier 'output.txt' en
    filtrant certaines lignes.
    Quand une ligne commence par 'LABEL', on arrête de copier, jusqu'à ce que l'on
    tombe sur une ligne qui ne contient que des caractères blancs.
    
    Code testé sur les versions suivantes de Python :
    - 3.5.3 (avec PyPy) et
    - 3.6.4 (avec CPython).
    """
    
    ###########
    # Imports #
    ###########
    
    import os
    
    #########
    # Paths #
    #########
    
    inputFilePath  = 'input.txt'
    outputFilePath = 'output.txt'
    
    #############
    # Main code #
    #############
    
    if __name__ == '__main__':
    	try:
    		copyLine = True
    		with open(outputFilePath, 'w') as outputFile:
    			with open(inputFilePath) as inputFile:
    				for line in inputFile:
    					if line.startswith('LABEL'):
    						copyLine = False
    					elif not line.strip():
    						copyLine = True
    					if copyLine:
    						outputFile.write(line)
    	except Exception as e:
    		print('Error: ' + str(e))
    		os.system('pause')

  3. #3
    Membre habitué
    Homme Profil pro
    Assistant technique
    Inscrit en
    Février 2007
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Assistant technique
    Secteur : Services à domicile

    Informations forums :
    Inscription : Février 2007
    Messages : 336
    Points : 197
    Points
    197
    Par défaut
    Citation Envoyé par Pyramidev Voir le message
    Bonjour,

    Je conseille Python.

    Démonstration :
    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
    """
    Copier le contenu d'un fichier 'input.txt' vers un fichier 'output.txt' en
    filtrant certaines lignes.
    Quand une ligne commence par 'LABEL', on arrête de copier, jusqu'à ce que l'on
    tombe sur une ligne qui ne contient que des caractères blancs.
    
    Code testé sur les versions suivantes de Python :
    - 3.5.3 (avec PyPy) et
    - 3.6.4 (avec CPython).
    """
    
    ###########
    # Imports #
    ###########
    
    import os
    
    #########
    # Paths #
    #########
    
    inputFilePath  = 'input.txt'
    outputFilePath = 'output.txt'
    
    #############
    # Main code #
    #############
    
    if __name__ == '__main__':
    	try:
    		copyLine = True
    		with open(outputFilePath, 'w') as outputFile:
    			with open(inputFilePath) as inputFile:
    				for line in inputFile:
    					if line.startswith('LABEL'):
    						copyLine = False
    					elif not line.strip():
    						copyLine = True
    					if copyLine:
    						outputFile.write(line)
    	except Exception as e:
    		print('Error: ' + str(e))
    		os.system('pause')
    Merci beaucoup

  4. #4
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 919
    Points : 6 746
    Points
    6 746
    Par défaut
    Je crois qu'il faut intervertir True et False dans le script sinon ça enregistre tout sauf les blocs commençant par LABEL.

  5. #5
    Membre habitué
    Homme Profil pro
    Assistant technique
    Inscrit en
    Février 2007
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Assistant technique
    Secteur : Services à domicile

    Informations forums :
    Inscription : Février 2007
    Messages : 336
    Points : 197
    Points
    197
    Par défaut
    Citation Envoyé par CosmoKnacki Voir le message
    Je crois qu'il faut intervertir True et False dans le script.
    Oui oui j'ai vu ça merci

  6. #6
    Membre habitué
    Homme Profil pro
    Assistant technique
    Inscrit en
    Février 2007
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Assistant technique
    Secteur : Services à domicile

    Informations forums :
    Inscription : Février 2007
    Messages : 336
    Points : 197
    Points
    197
    Par défaut
    Citation Envoyé par CosmoKnacki Voir le message
    Je crois qu'il faut intervertir True et False dans le script sinon ça enregistre tout sauf les blocs commençant par LABEL.
    Du coup je me suis inspiré de ton code pour essayer de le faire en C# (je précise que je n'ai pas de connaissance dans ce langage). Juste pour le fun.

    Ça donne ça :

    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
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.IO;
    
    namespace ConsoleApp1
    {
        class Program
        {
            static void Main(string[] args)
            {
                String line; try
                {
                    StreamReader sr = new StreamReader("C:\\000.txt", System.Text.Encoding.UTF8);
                    StreamWriter sw = new StreamWriter("C:\\001.txt", true, Encoding.UTF8);
                    line = sr.ReadLine();
                    Boolean copy;
                    copy = true;
                    while (line != null)
                    {
                        line = sr.ReadLine();
                        if (line.Trim().StartsWith("CREATE"))
                        {
                            copy = false;
                        }
                        if (line.Trim().StartsWith("LABEL"))
                        {
                            copy = true;
                        }
                        if (copy == true)
                        { 
                            sw.WriteLine(line);
                        }
                    }
                    sr.Close();
                    sw.Close();
                }
                catch (Exception e)
                {
                    Console.WriteLine("Exception: " + e.Message);
                }
                finally
                {
                    Console.WriteLine("Executing finally block.");
                }
            }
        }
    }

  7. #7
    Expert éminent
    Avatar de Pyramidev
    Homme Profil pro
    Tech Lead
    Inscrit en
    Avril 2016
    Messages
    1 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Tech Lead

    Informations forums :
    Inscription : Avril 2016
    Messages : 1 493
    Points : 6 207
    Points
    6 207
    Par défaut
    Citation Envoyé par CosmoKnacki Voir le message
    Je crois qu'il faut intervertir True et False dans le script sinon ça enregistre tout sauf les blocs commençant par LABEL.
    Au temps pour moi. J'avais lu « Supprimer tous les blocs qui commencent par "LABEL". » au lieu de « Supprimer tous les blocs qui ne commencent pas par "LABEL". »

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 14/05/2018, 22h25
  2. Quel langage de programmation choisir pour débuter ?
    Par Olivier Famien dans le forum Débuter
    Réponses: 86
    Dernier message: 17/06/2016, 19h27
  3. Réponses: 1
    Dernier message: 19/12/2013, 11h46
  4. Quel langage de programmation choisir pour un automate web ?
    Par Rpi78 dans le forum Langages de programmation
    Réponses: 3
    Dernier message: 03/05/2013, 06h46
  5. Quel langage de programmation utiliser pour un MMOG?
    Par @v@lon dans le forum Développement 2D, 3D et Jeux
    Réponses: 18
    Dernier message: 17/03/2007, 13h31

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