Les scripts PYTHON

Site de reference : http://unstableme.blogspot.com

LE CUMUL D'UNE COLONNE
  1. Cumuler et creer des fichiers si limite atteinte - while 1 - (+ ecriture multi fichiers)
  2. Cumuler et creer des fichiers si limite atteinte - while k < len(fp) - (+ ecriture multi fichiers)
  3. Cumuler et creer des fichiers si limite atteinte - for i in range(len(fp)) - (+ ecriture multi fichiers)
  4. Cumuler les valeurs d'une colonne d'un seul fichier et separer par 1 trait si limite atteinte (+ ecriture 1 seul fichier)
  5. Cumuler les valeurs d'une colonne d'un seul fichier - sans remise a 0 a une limite (+ ecriture 1 seul fichier)
  6. Cumuler les valeurs d'une colonne de plusieurs fichiers (+ ecriture multi fichiers)
  7. Cumuler les occurrences d'un pattern pour chaque ligne et totaliser
  8. Cumuler des valeurs d'une colonne avec remise a zero a une limite fixee
LA LIGNE : compter
  1. Compter le nombre de lignes d'un fichier (exemple 1)
  2. Compter le nombre de lignes d'un fichier (exemple 2)
  3. Numeroter les lignes d'un fichier
  4. Compter le nombre de mots d'un fichier
  5. Compter le nombre de lignes de plusieurs fichiers
  6. Inserer un compteur de visites dans un script
LA LIGNE : inserer
  1. Inserer un trait de separation avant un pattern (exemple 1)
  2. Inserer un trait de separation avant un pattern (exemple 2)
  3. Inserer un trait de separation dans un fichier si la colonne 1 change
  4. Inserer un trait de separation dans un fichier si la colonne 1 change - zip paste shift
  5. Inserer un trait de separation dans un fichier si (n+1 < n) en colonne 3 - cumul deja fait
  6. Inserer un trait de separation dans un fichier si (n+1 = n+1) en colonne 3 - cumul deja fait
LA LIGNE : ajouter
  1. Ajouter une ligne au debut ou a la fin d'un fichier (exemple court)
  2. Ajouter une ligne au debut et a la fin d'un fichier (exemple long)
  3. Ajouter une ligne au debut et a la fin de plusieurs fichiers
  4. Ajouter un meme chiffre a toutes les fins de lignes
  5. Ajouter du texte en debut ou fin de ligne
  6. Ajouter des digits "0" devant des chiffres pour qu'ils aient tous la meme longueur
LA LIGNE : marquer - coller - (de) grouper
  1. Coller pattern unique inoutplusieursfichiers a colonne mots differents
  2. Coller pattern devant chaque ligne
  3. Marquer un titre et le repeter sur lignes suivantes
  4. Habillage pour capture des infos sur les lignes des paragraphes _ part3
  5. Cloner une portion de ligne titree et la repeter en entete (exemple1)
  6. Cloner une portion de ligne titree et la repeter en entete (exemple2)
  7. Cloner une portion de ligne titree et la repeter (sur plusieurs fichiers) (exemple3)
  8. Grouper toutes les lignes ayant meme colonne 1 (d'1 seul fichier)
  9. Grouper toutes les lignes ayant meme colonne 1 (de plusieurs fichiers)
  10. Grouper toutes les lignes sur une seule ligne (de plusieurs fichiers)
  11. Degrouper : coller la colonne 1 a chaque autre colonne
LA LIGNE : capturer (PARTIE 1)
  1. Capturer un pattern s'il est contenu dans un fichier (IF ANY)
  2. Capturer un pattern s'il est contenu dans un fichier (FOR IN IF)
  3. Capturer un pattern dans plusieurs fichiers (FOR IN IF)
  4. Capturer lignes dans un fichier en excluant patterns (search)
  5. Coller nom fichier devant lignes (sortie plusieurs fichiers) (replace - split - if in)
  6. Capturer patterns dans plusieurs fichiers (FOR IN IF)
  7. Capturer un pattern : GREP avec 'FOR IN IF'
  8. Capturer un pattern : GREP par accumulation (+=) (voir concatenation)
  9. Capturer un pattern : GREP avec SEARCH (permet replace)
  10. Capturer un pattern : utilise l'objet IN
  11. Capturer un pattern : utilise FIND
  12. Capturer des patterns avec lignes avant et apres (precedentes et suivantes) (range)
  13. Capturer patterns multi regex
LA LIGNE : capturer (PARTIE 2)
  1. Capturer un pattern avec separateur delimitant la zone de capture
  2. Capturer des patterns sur des portions ou lignes entieres (exemple 1 et 2)
  3. Capturer des patterns avec "fnmatch" (resultat en liste)
  4. Capturer des patterns avec search-replace
  5. Capturer un pattern avec 1 mot avant et apres
  6. Capturer un pattern avec 2 fichiers
  7. Capturer un pattern avec finditer
LA LIGNE : capturer avec STARTSWITH (PARTIE 3)
  1. Capturer un pattern avec startswith
  2. Capturer patterns multi regex avec STARTSWITH - exemple 1
  3. Capturer patterns multi regex avec STARTSWITH - exemple 2
  4. Capturer un pattern avec endswith
  5. Capturer pattern equivalent de startswith
LA LIGNE : selectionner - remplacer - verifier
  1. Lire 2 lignes apres chaque apparition d'1 marqueur
  2. Lire premiere et derniere ligne
  3. Lire la ligne 1
  4. Lire la ligne 3 en partant de la fin
  5. Lire les N premieres lignes d'un fichier (exemple 1 court)
  6. Lire les N premieres lignes d'un fichier (exemple 2 long)
  7. Selectionner des lignes contenant 3 espaces (re.search)
  8. Selectionner des lignes contenant 1 pattern et ouvrir les fichiers correspondants (finditer)
  9. Selectionner des portions de lignes delimitees par un separateur (re.search)
  10. Selectionner des portions de lignes delimitees par un separateur (split)
  11. Remplacer la derniere occurrence d'un pattern d'un fichier
  12. Verifier dans plusieurs fichiers si la derniere ligne contient 1 pattern
LA LIGNE : marquer
  1. Marquer une ligne (avec 2 fichiers et 'intersection')
  2. Marquer un titre devant toutes les lignes (readlines - startswith)
  3. Marquer un titre devant toutes les lignes (readlines - if in)
  4. Marquer un titre devant toutes les lignes (readlines - endswith)
  5. Marquer un titre devant toutes les lignes (readlines - range len)
  6. Marquer un titre devant toutes les lignes (readlines - range len)
  7. Marquer un titre devant toutes les lignes - while 1:
LA LIGNE : supprimer
  1. Supprimer des fins de fichiers a partir d'1 pattern
  2. Supprimer un blanc au debut ou fin de ligne - supprimer un retour chariot
  3. Supprimer le dernier mot de chaque ligne
  4. Supprimer les lignes doubles (exemple 1) (set et add)
  5. Supprimer les lignes doubles (exemple 2) (append et join)
  6. Supprimer les lignes doubles (exemple 3) reperees par un marqueur
  7. Supprimer les lignes vides
  8. Supprimer des lignes avec startswith
  9. Supprimer des lignes d'un fichier si des mots sont dans un fichier
  10. Supprimer des lignes de plusieurs fichiers si des mots sont dans un fichier
  11. Supprimer des groupes de mots avec re.sub
LA COLONNE
  1. Soustraire valeurs petit fichier d'un gros fichier_vlookup
  2. Capture des colonnes 1 et 2
  3. Capture de l'avant derniere et derniere colonne
  4. Ajouter un meme texte devant toutes les lignes (en colonne)
  5. Arrondir un chiffre a la decimale inferieure ou superieure
LA LISTE
  1. MIN et MAX des elements d'une liste : shortest - longest
LE TABLEAU
  1. Capturer une ligne et la modifier avec un tableau (selection d'une ligne)
LE FICHIER
  1. Compter le nombre de fichiers avec 'FOR IN IF'
CE QUE PERMET LA SYNTAXE "FOR IN IF"
  1. Ce que "FOR IN IF" permet de faire : isspace-startswith-search-if any-if in-replace-split-sorted-chdir ...
  2. La comprehension de listes : FOR IN IF
CE QUE PERMET LA SYNTAXE "WHILE" EN LECTURE LIGNE PAR LIGNE
  1. WHILE 1: Choisir un titre et le repeter devant les lignes
  2. Ce que "WHILE LINE" permet de faire : lecture ligne par ligne d'un fichier
  3. Pour numeroter les lignes d'un fichier
  4. Pour numeroter les lignes de plusieurs fichiers (avec concatenation)
  5. Un fichier a 2 colonnes commande l'habillage d'un autre fichier
  6. Un fichier a 2 colonnes commande (avec debut-fin) le decoupage en plusieurs fichiers
WHILE avec FOR IN IF
  1. FOR cree 1 liste de fichiers + ouverture + WHILE boucle sur les lignes + JOIN convertit en 'string'
  2. WHILE ouvre les fichiers et lit les lignes en 'liste' + JOIN les convertit en 'string'
  3. WHILE ouvre les fichiers et lit les lignes en 'string'
  4. Creation d'1 liste de fichiers + FOR ouvre les fichiers + WHILE lit les lignes en liste + JOIN convertit en 'string'
  5. WHILE cree 1 liste de fichiers + FOR ouvre les fichiers + WHILE lit les lignes en liste + JOIN convertit en 'string'
GREP = CAPTURE DE MOTS
  1. GREP avec 'for in if' (exemple 1/7)
  2. GREP avec 'match' (exemple 2/7)
  3. GREP avec 'contenu +=' (exemple 3/7)
  4. GREP avec 'search' (exemple 4/7)
  5. GREP avec 'range len' (exemple 5/7)
  6. GREP avec 'startswith regex' (exemple 6/7)
  7. GREP avec 'if any' (exemple 7/7)
CE QUE PERMET LA SYNTAXE "RANGE LEN" DANS UNE LISTE
  1. Ce que "RANGE LEN" permet de faire : capturer lignes avant ou apres 1 pattern
  2. Ce que "RANGE LEN" permet de faire : read() splitlines() split isdigit isalpha
  3. Ce que "RANGE LEN" permet de faire : ajouter un titre devant chaque ligne d'un fichier
CE QUE PERMET LA SYNTAXE "WITH OPEN"
  1. Ce que WITH OPEN permet de faire : startswith sub replace split (exemple pour un seul fichier)
  2. Ce que WITH OPEN permet de faire : sub ifin replace (exemple pour plusieurs fichiers)
PASTE de FICHIERS et de LISTES (ZIP)
  1. PASTE de 2 fichiers
  2. PASTE de 2 listes : ZIP
MAITRISER LA COLONNE ET LA LIGNE
  1. Capturer en verticale et horizontale
  2. Une colonne indique le nombre de fois qu'une ligne doit etre repetee
  3. Capturer la 1 ere et derniere ligne d'une colonne marquee par un separateur
  4. Noter les lignes ou les patterns d'une colonne changent
  5. Selectionner les lignes ayant plus d'un champ
  6. Marquer les lignes ayant plus d'un champ
LES OCCURRENCES UNIQUES
  1. Afficher les occurrences uniques dans une colonne (exemple 1)
  2. Afficher les occurrences uniques dans une colonne (exemple 2)
LES OCCURRENCES D'UN PATTERN
  1. Noter occurrence d'un pattern en colonne 1 (remise a 0 s'il change) zip paste shift
  2. Capturer une ligne avec choix du pattern et de son occurrence
  3. Maitriser le nombre de champs pour chaque ligne
  4. Compter nombre de mots pour chaque ligne (et l'ecrire en fin de ligne)
  5. Compter occurrences d'un pattern pour chaque ligne - exemple 1
  6. Compter occurrences d'un pattern pour chaque ligne - exemple 2
  7. Compter les occurrences de chaque mot d'un fichier : methode 1
  8. Compter les occurrences de chaque mot d'un fichier : methode 2
  9. Compter les occurrences de chaque mot d'un fichier : methode 3
  10. Compter les occurrences de chaque mot d'un fichier : methode 4
  11. Indiquer le numero de chaque ligne qui suit un titre
  12. Cumuler les occurrences d'un pattern d'un fichier et ecrire ce chiffre en fin de ligne
  13. Indiquer les positions d'un pattern
CONCATENER
  1. Concatener plusieurs listes
  2. Exemples de syntaxes pour concatener
  3. Concatener 2 fichiers (read)
  4. Concatener une serie avec listdir - exemple 1
  5. Concatener une serie avec listdir - exemple 2
  6. Concatener une serie de fichiers (avec choix des lignes)
  7. Concatener une serie de fichiers (avec numerotation des lignes)
LE REPERTOIRE CONTENANT DES SOUS REPERTOIRES ET DES FICHIERS
  1. Rechercher une syntaxe dans des fichiers
  2. Deleter le repertoire s'il existe ; creer le repertoire s'il n'existe pas
LEN
  1. Ajouter des digits "0" devant des chiffres pour qu'ils aient tous la meme longueur
RANGE - ENUMERATE
  1. Marquer des lignes pour les joindre ensuite
OUVRIR UN FICHIER EN STRING
  1. Chaque ligne est en STRING
  2. Chaque mot est en STRING
  3. Une STRING contenant des lignes
  4. Une STRING contenant des mots
OUVRIR UN FICHIER EN LISTE
  1. Chaque ligne est en LISTE
  2. Une LISTE contenant des lignes
  3. Une LISTE contenant des mots
XARGS : (syntaxe BASH) chercher un pattern dans fichiers, repertoires, sous-repertoires
  1. XARGS : Rechercher un pattern dans plusieurs fichiers : exemple court 1
  2. XARGS : Rechercher une syntaxe dans des sous repertoires (ouverture en string) : exemple court 2
  3. XARGS : Rechercher une syntaxe dans des sous repertoires (ouverture en liste) : exemple complet 1
  4. XARGS : Rechercher une syntaxe dans des sous repertoires (ouverture en liste) : exemple complet 2
ADAPTER LES MODES D'OUVERTURES DE FICHIERS AUX ACTIONS DU SCRIPT
  1. Si un pattern d'1 fichier existe ds la colonne 1 d'1 autre fichier, substituer sa correspondance en colonne 2
  2. Chercher si les strings d'un gros fichier existent dans une liste
  3. Une ligne est ecrite si un pattern dans une colonne correspond a un element dans un autre fichier
  4. Des patterns d'une liste deviennent des noms de fichiers vides
SUB
  1. Modifier une syntaxe avec SUB - exemple 1
  2. Modifier une syntaxe avec SUB - exemple 2
COMPARER 2 LISTES
  1. Verifier si elements d'une petite liste sont dans grande liste (vlookup) exemple1
  2. Verifier si elements d'une petite liste sont dans grande liste ; et inversement (vlookup) exemple2
ECRIRE DANS DES FICHIERS ET LES SAUVER SOUS UN AUTRE NOM
  1. Ecrire le nom du fichier devant toutes les lignes de plusieurs fichiers (exemple 1)
  2. Ecrire en colonne 1 a l'interieur de plusieurs fichiers et les sauver en modifiant le prefixe (exemple 2)
LE DICTIONNAIRE : changer plusieurs valeurs dans 1 seul fichier avec un tableau a 2 colonnes
  1. Remplacer des valeurs en colonne 1 par celles en colonne 2 dans un fichier
CONVERTIR ASCII EN HEXA PUIS EN ASCII
  1. Supprimer des accents en convertissant de l'ASCII en HEXA et HEXA en ASCII
LA FREQUENCE DES MOTS
  1. Apres avoir delimite une zone de capture, indiquer les frequences des mots
SPLIT
  1. Selectionner des colonnes en utilisant : SPLIT
  2. Lire un fichier ligne par ligne en splitant avec un compteur
REPLACE
  1. Remplacer un pattern
JOINDRE
  1. Joindre 2 lignes consecutives sur 1 seule ligne
  2. Merge 2 files side by side (equivalent de PASTE en bash)
  3. Joindre 2 lignes consecutives, deleter la 3 eme
IF ANY
  1. Test sur l'existence d'un mot dans un fichier
  2. Supprimer des lignes si des mots sont dans un fichier
LA LISTE : range - pop - sorted(list(set()))
  1. range - pop : selectionne un element d'une liste
  2. sorted(list(set())) : liste des elements uniques
SORT
  1. Trier un fichier (sorted set)
  2. Trier un fichier (read splitlines)
  3. Trier sur une seule colonne (list sort key lambda)
  4. Trier en choisissant la colonne du tri (list sort key lambda split)
LISTER ET COMPTER LES FICHIERS D'UN REPERTOIRE
  1. Compter les fichiers d'un repertoire
  2. Lister un repertoire avec 'getstatusoutput'
  3. Lister un repertoire avec 'startswith'
  4. Lister un repertoire avec 'search'
TESTER
  1. Tester si un fichier est vide
COPIER
  1. Copier un fichier dans un autre repertoire (oubien le changer de repertoire)
  2. Copier plusieurs fichiers de meme prefixe dans un autre repertoire
  3. Copier plusieurs fichiers dans un autre fichier
  4. Copier plusieurs repertoires dans un autre repertoire
RENOMMER
  1. Renommer un fichier
  2. Renommer plusieurs fichiers en changeant du texte
  3. Renommer plusieurs fichiers selon fichier 2 colonnes (col1=ancien - col2=nouveau)
  4. Renommer plusieurs fichiers en ajoutant 0 devant des digits
REMOVE
  1. Deleter un fichier (exemple 1)
  2. Deleter un fichier (exemple 2)
  3. Deleter un fichier s'il est vide
PARAGRAPHE
  1. Creer des paragraphes suivant la premiere lettre des mots de la colonne 1
  2. Capturer des patterns d'une colonne et les ecrire dans des fichiers differents si ces patterns changent
  3. Capturer des paragraphes avec "IF IN"
  4. Capturer des paragraphes avec choix sur le pattern de debut
  5. Capturer des paragraphes avec seulement un pattern de debut
  6. Capturer des paragraphes avec pattern de debut et de fin
  7. Capturer des paragraphes avec pattern de debut et de fin et rstrip
Inclure une commande BASH dans un script PYTHON
  1. Inclure une commande BASH avec OS.SYSTEM
  2. Inclure une commande BASH avec GETSTATUSOUTPUT
FTP - MAIL
  1. Envoyer un fichier sur un compte FTP
  2. Envoyer un mail contenant le texte d'un fichier (sans piece attachee)
  3. Envoyer un mail contenant une piece attachee (texte-image-audio)
ITERTOOLS : operations math
  1. ITERTOOLS : generateur de imap ifilter chain groupby takewhile dropwhile
YIELD
  1. YIELD : raccourcit le temps d'execution d'un script
  2. YIELD genere un compteur (exemple 1)
  3. YIELD genere un compteur (exemple 2)

haut

Cumuler et creer des fichiers si limite atteinte - while 1 - (+ ecriture multi fichiers)


#!/usr/bin/python

#@_3191y_count_cumul_colonne_chiffres!!while_readline_break_flag

import time
import glob
import os

LIMIT=30

TIME=0

IN="in.txt"

# IN
# 8
# 5
# 13
# 3
# 10
# 5
# 16
# 7
# 3

##################

# deleter anciens fichiers

for currentFile in glob.glob('*'):
    e1 = "z-";
    if currentFile.startswith(e1):
        os.remove(currentFile)

print " ---> ok anciens fichiers deletes"
time.sleep(TIME)

###########

total = 0
count = 1
fp = open(IN , 'r')

while 1:                   #  "while 1"  mieux que  "while line"
    flag=1
    line = fp.readline()       # lecture ligne par ligne    
    time.sleep(TIME)

    if not line:        # bloc d'arret pour la fin du fichier
        break
        
    w = int(line.strip())
    total = total + w

    if total > LIMIT:
        flag=0           
        count = count + 1
        total = w

    flag=1
    o = open("z-" + str(count) + ".txt" , 'a')   

    if flag:
        print w , total
        print >> o , w , total

# resultat : creation de 3 fichiers
# z-1.txt
# 8 8
# 5 13
# 13 26
# 3 29

# z-2.txt
# 10 10
# 5 15

# z-3.txt
# 16 16
# 7 23
# 3 26

#%_3191

haut

Cumuler et creer des fichiers si limite atteinte - while k < len(fp) - (+ ecriture multi fichiers)


#!/usr/bin/python

#@_3192y_count_cumul_colonne_chiffres!!while_len_splitlines_flag_str

import time
import glob
import os

LIMIT=30

TIME=0

IN="in.txt"

# IN
# 8
# 5
# 13
# 3
# 10
# 5
# 16
# 7
# 3

##################

# deleter anciens fichiers

for currentFile in glob.glob('*'):
    e1 = "z-";
    if currentFile.startswith(e1):
        os.remove(currentFile)

print " ---> ok anciens fichiers deletes"
time.sleep(TIME)

###########

k=0
total = 0
count = 1
fp = open(IN).read().splitlines()

while k < len(fp):
    flag=1
    time.sleep(TIME)

    w = int(fp[k])
    total = total + w
    k=k+1
    
    if total > LIMIT:
        flag=0           
        count = count + 1
        total = w
        
    flag=1
    o = open("z-" + str(count) + ".txt" , 'a')   

    if flag:
        print w , total
        print >> o , w , total

# resultat identique que le script precedent

#%_3192

haut

Cumuler et creer des fichiers si limite atteinte - for i in range(len(fp)) - (+ ecriture multi fichiers)


#!/usr/bin/python

#@_3193y_count_cumul_colonne_chiffres!!readlines_range_len_flag_str

import time
import glob
import os

LIMIT=30

TIME=0

IN="in.txt"

# IN
# 8
# 5
# 13
# 3
# 10
# 5
# 16
# 7
# 3

##################

# deleter anciens fichiers

for currentFile in glob.glob('*'):
    e1 = "z-";
    if currentFile.startswith(e1):
        os.remove(currentFile)

print " ---> ok anciens fichiers deletes"
time.sleep(TIME)

###########

total = 0
count = 1
#fp = [line.strip() for line in open(IN)]    # autre syntaxe
fp = open(IN , 'r').readlines()

for i in range(len(fp)):
    flag=1
    time.sleep(TIME)

    w = int(fp[i])
    total = total + w

    if total > LIMIT:
        flag=0           
        count = count + 1
        total = w

    flag=1
    o = open("z-" + str(count) + ".txt" , 'a')   

    if flag:

        print w , total
        print >> o , w , total

# resultat identique que le script precedent

#%_3193

haut

Cumuler les valeurs d'une colonne d'un seul fichier et separer par 1 trait si limite atteinte (+ ecriture 1 seul fichier)


#!/usr/bin/python

#@_3194y_count_cumul_colonne_chiffre_et_inserer_trait_separe!!while_readlines_split_int_flag_break

import time
import glob
import os

# BUT : separer par 1 trait quand cumul > LIMIT
# ecriture dans 1 seul fichier

LIMIT=30

IN="in-stm4.txt"
OUT="out-stm5.txt"

TIME=0

# IN :
# 1001 8
# 1002 5
# 1003 13
# 1004 3
# 1005 10
# 1006 5
# 1007 16
# 1008 7
# 1009 3
# end 0     # <--- ligne ajoutee manuellement (oubien avec "write")


# cumul + trait separation  --->  resultat ds 1 seul fichier

total = 0

f1 = open (IN , 'r')
f2 = open (OUT , "w")

while 1:

    line = f1.readline()

    col0 = line.split()[0]
    col1 = line.split()[1]

    w = int(col1.strip())
    total = total + w
    
    time.sleep(TIME)
    if "end" in line:
        break

    if total < LIMIT:
        flag=1
        
    if total > LIMIT:
        flag=1           
        total = w
        print "---------------"
        f2.write("---------------\n")

    if flag:
        print col0 , col1 , total 
        total2 = str(total)
        road = col0 , col1 , total2
        roadb = ' '.join(road)
        f2.write(roadb + "\n")

# resultat : 1 seul fichier :
# 1001 8 8
# 1002 5 13
# 1003 13 26
# 1004 3 29
# ---------------
# 1005 10 10
# 1006 5 15
# ---------------
# 1007 16 16
# 1008 7 23
# 1009 3 26

#%_3194

haut

Cumuler les valeurs d'une colonne d'un seul fichier - sans remise a 0 a une limite (+ ecriture 1 seul fichier)


#!/usr/bin/python

#@_3001y_count_cumul_colonne_chiffres!!forinopen_split_int_str

IN="in.txt"
OUT="out.txt"

# IN :
# 52 /nfs/u/comp-new1-segou-segin.txt
# 4 /nfs/u/1-0-CONCAT-NEWY-10-28.txt
# 32 /nfs/u/1-0-DICO-WR-UKFR-10-26.txt
# 6 /nfs/u/1-0-entier-parag-WR-FR-10-26.txt

total  = 0
dlist = [line.strip() for line in open (IN)]
fw = open(OUT , 'w')
for line in dlist:
    w = line.split(" ")[0]
    w2 = int(w)
    total = total + w2
    total2 = str(total)
print total
fw.write(total2)

fw.close()

# resultat :
# 94

#%_3001

haut

Cumuler les valeurs d'une colonne de plusieurs fichiers (+ ecriture multi fichiers)


#!/usr/bin/python

#@_3002y_count_cumul_colonne_chiffres_inoutplusieursfichiers!!listdir_split_int_str_

import os

# cumul des bytes pour chaque fichier - ecriture ds plusieurs fichiers : yz-

PATHHOME="/Python27/tests-12"

# z-in1.txt :
# 5
# 10

# z-in2.txt :
# 7
# 16

f1 = os.listdir(PATHHOME)

for file1 in f1:
    if "z-" in file1:
#        print file1
        total  = 0
        f2 = open("y" + file1 , 'w')

        dlist = [line.strip() for line in open (file1)]

        for line in dlist:
            w = line.split()[0]
            w2 = int(w)
            total = total + w2
            total2 = str(total)
#        print total
        f2.write(total2)

f2.close()

# resultat :
# yz-in1.txt
# 15

# yz-in2.txt
# 23

#%_3002

haut

Cumuler les occurrences d'un pattern pour chaque ligne et totaliser


#!/usr/bin/python

#@_3003y_count_cumul_occurrences_pattern_par_ligne_rawinput!!rawinput_withopen_len_split_join

RAW = raw_input("chercher un mot ds les z- : ")

inter = 0
cumul = []

######################

# habiller le fichier

with open("z.txt" , 'r') as road1:
    fw = open("tz.txt" , 'w')
    for line1 in road1:
        w = len(line1.split(RAW)) -1
#        print w
        line1 = line1.strip()
        if RAW in line1:
            print "z.txt" , " % " , RAW , " @%@ " , w , " @%@ " , line1
            wb = str(w)
            element = "z.txt" , " % " , RAW , " @%@ " , wb , " @%@"
            element2 = ''.join(element)
            fw.write(element2 + "\n")

road1.close()
fw.close()

################

# ouvrir le tz et cumuler les occurrences

result = 0
fw2 = open("stz.txt" , 'w')
for line5 in open("tz.txt"):
    line5 = line5.split("@%@")[1]
    result += int(line5)
#    print result
    result2 = str(result)
    fw2.write(result2 + "\n")
fw2.close()

###################

# capture de la derniere ligne du cumul

# exemple 1 :
f6 = open("stz.txt" , 'r')
line6 = f6.readlines()
if line6:
    last = line6[-1]
#    print last.strip()

# exemple 2 :
f6 = open("stz.txt" , 'r')
f7 = open("mstz.txt" , 'w')
mylist = f6.read().splitlines()
print mylist[-1]
f7.write(mylist[-1])

# resultat :
# chercher un mot ds les z- : replace
# z.txt  %  replace  @%@  1  @%@  @_500y_capture_pattern_!!withopen_finditer_startswith_replace_format

# z.txt  %  replace  @%@  1  @%@  @_500y_capture_pattern
# z.txt  %  replace  @%@  2  @%@  line = line.replace("@_500y-").replace("\n" , "")
# 3

#%_3003

haut

Cumuler des valeurs d'une colonne avec remise a zero a une limite fixee


#!/usr/bin/python

#@_3004y_count_cumul_des_valeurs_d_1_colonne_avec_remise_a_zero!!while_split_read_splitlines

import os
import glob
import time
import shutil

TIME=1

IN="test-in-stm-mini.txt"
ORIG="0hyd-start.txt"

LIMIT=20
LOOPNB=5

################

# ORIG :
# 1001 5
# 1002 7
# 1003 3
# 1004 6
# 1005 9
# 1006 4
# 1007 11
# 1008 5
# 1009 4
# 1010 8


# deleter anciens resultats

for currentFile in glob.glob('*'):
    e1 = "2a-in-";
    if currentFile.startswith(e1):
        os.remove(currentFile)

for currentFile in glob.glob('*'):
    e2 = "3a-out-";
    if currentFile.startswith(e2):
        os.remove(currentFile)

#############################

# sauvegarder l'original

shutil.copy2(ORIG, '2a-in-1.txt')

print " ---> ok copie de l'original ds : 2a-in-1.txt"
time.sleep(TIME)

##################

# cumul de colonne

i = 1
while i < LOOPNB:
    print ""
    print "#########  CUMUL : " , i , "    depart de la boucle i = " , i
    result = 0

    with open("2a-in-" + str(i) + ".txt" , 'r') as f2:
        o = open("3a-out-" + str(i) + ".txt" , "a")
        for line in f2:
	    col1 = line.split()[0]
            col2 = line.split()[1]
            result += int(col2)
            if result < LIMIT:

                print >> o , col1 , result
    f2.close()
    o.close()

    with open("3a-out-" + str(i) + ".txt" , "r") as h:
        new = open("2a-in-" + str(i+1) + ".txt" , 'w')
        var = sum(1 for _ in h)
        print " --- nb lignes du cumul 3a-out- [:var]   : " , var , " jusqu'a LIMIT = " , LIMIT
	mylist1 = open("3a-out-" + str(i) + ".txt").read().splitlines()
        newlist1 = mylist1[:var]
	for z1 in newlist1:
            print z1

	mylist2 = open("2a-in-" + str(i) + ".txt").read().splitlines()
        newlist2 = mylist2[var:]
        print " --- ce qui reste a cumuler dans les fichiers 2a-in-  [var:]  jusqu'a LIMIT = " , LIMIT , " : "
	for z2 in newlist2:
            print z2
            new.write(z2 + "\n")
        i += 1
    new.close()

# on peut ensuite concatener les fichiers resultats : 3a-out-...txt
# en separant chaque fichier par un trait de separation -------

# resultat :
# #########  CUMUL :  1     depart de la boucle i =  1
# --- nb lignes du cumul 3a-out-  [:var] :  3  jusqu'a LIMIT =  20
# 1001 5
# 1002 12
# 1003 15
# --- ce qui reste a cumuler dans les fichiers 2a-in-  [var:]   jusqu'a LIMIT =  20  :
# 1004 6
# 1005 9
# 1006 4
# 1007 11
# 1008 5
# 1009 4
# 1010 8

# #########  CUMUL :  2     depart de la boucle i =  2
# --- nb lignes du cumul 3a-out-  [:var]  :  3  jusqu'a LIMIT =  20
# 1004 6
# 1005 15
# 1006 19
# --- ce qui reste a cumuler dans les fichiers 2a-in-  [var:]   jusqu'a LIMIT =  20  :
# 1007 11
# 1008 5
# 1009 4
# 1010 8

# #########  CUMUL :  3     depart de la boucle i =  3
# --- nb lignes du cumul 3a-out-  [:var]  :  2  jusqu'a LIMIT =  20
# 1007 11
# 1008 16
# --- ce qui reste a cumuler dans les fichiers 2a-in-  [var:]   jusqu'a LIMIT =  20  :
# 1009 4
# 1010 8

# #########  CUMUL :  4     depart de la boucle i =  4
# --- nb lignes du cumul 3a-out-  [:var]  :  2  jusqu'a LIMIT =  20
# 1009 4
# 1010 12
# --- ce qui reste a cumuler dans les fichiers 2a-in-  [var:]   jusqu'a LIMIT =  20  :

#%_3004

haut

Compter le nombre de lignes d'un fichier (exemple 1)


#!/usr/bin/python

#@_3005y_count_nombre_de_lignes_d_1_fichier_exemple_1!!openr_withopen_len_readlines

START="in.txt"
# she plans to attempt @@ the record again in June
# his aim is @@ to get rich quickly

# methode 1 :
linecount = len(open(OUT , 'r').readlines())
print "le fichier : " , OUT , " a %d lignes" % linecount

# print "nb lignes du fichier : " , OUT , " : " , linecount

# methode 2 :
with open (START, 'r') as f:
    linecount = len(f.readlines())
    print linecount

# resultat
# 2
#%_3005

haut

Compter le nombre de lignes d'un fichier (exemple 2)


#!/usr/bin/python

#@_3006y_count_nombre_de_lignes_d_1_fichier_exemple_2!!openr_read_while_+=_count

START="in.txt"

# START
# she plans to attempt @@ the record again in June
# his aim is @@ to get rich quickly

f = open (START)
lines = 1
buf_size = 1024 * 1024
read_f = f.read
buf = read_f(buf_size)

if not buf:
    print "not buf"
while buf:
    lines += buf.count('\n')
    buf = read_f(buf_size)
    print lines - 1

f.close()

# resultat
# 2
#%_3006

haut

Numeroter les lignes d'un fichier


#!/usr/bin/python

#@_3007y_count_numeroter_lignes_d_1_fichier!!count_while_split

IN="in.txt"
OUT="out.txt"

# IN :
# data1 line1
# data2 line2
# data3 line3

#+_3007_count_numeroter_lignes_d_1_fichier!!str_count

count = 1
f1 = open("in.txt" , 'r')
f2 = open("out.txt" , 'w')
for line1 in f1:
    print count , line1.strip()
    w = str(count)
    f2.write(w + " " + line1)
    count += 1
f2.close()
#-

# resultat :
# 1 data1 line1
# 2 data2 line2
# 3 data3 line3


#+_3007_count_numeroter_lignes_d_1_fichier!!while_openr_split_join_+=

num_lines = sum(1 for line in open (IN))

print "nombre de lignes du fichier : " , num_lines    # 3


# boucle while
count = 0
while (count < num_lines):
    print ""
    print " --> boucle nb : " , count+1 , "/" , num_lines
    f1 = open (IN)
    li = [ ln.split() for ln in f1 ]

    listr = ' '.join(li[count])
    print "   ligne : " , count+1 , " : " , listr
    count += 1
#-

# resultat :
# nombre de lignes du fichier :  3

#  --> boucle nb :  1 / 3
#    ligne :  1  :  data1 line1

#  --> boucle nb :  2 / 3
#    ligne :  2  :  data2 line2

#  --> boucle nb :  3 / 3
#    ligne :  3  :  data3 line3

################

#+_3007_count_numeroter_lignes_d_1_fichier!!openr_readlines_int_len_while_str_join
print "---------"

file = open (IN,"r")

inter = file.readlines()
out1 = open (OUT, "w")    

z = int(len(inter))
print "nombre de lignes du fichier : " , z    # 3


# boucle while
i = 1
while i <= z:

    for w in inter:
        print str(i) + " @ " , w.rstrip()

        road1=str(i) + " @ " , w.rstrip()
        road2=''.join(road1)
        out1.write(str(road2) + "\n")
        i = i + 1

#-

# resultat :
# nombre de lignes du fichier :  3
# 1 @  data1 line1
# 2 @  data2 line2
# 3 @  data3 line3

################

#+_3007_count_numeroter_lignes_d_1_fichier!!openr_readline_while_str_+=
print "---------"

count = 1
f = open (IN,"r")
line = f.readline()

while line:
    print str(count) , " _ " , line.strip()

    line = f.readline()
    count = count + 1

f.close()
#-
# resultat :
# 1  _  data1 line1
# 2  _  data2 line2
# 3  _  data3 line3
#%_3007

haut

Compter le nombre de mots d'un fichier


#!/usr/bin/python

#@_3008y_count_nombre_mots_d_1_fichier!!openr_split_len_str

import os
import re

# in.txt :
# data 1
# data 2
# data 3

wordcount=0
f = open ('in.txt' ,'r')
fw = open('out.txt' , 'w')    

for lines in f:
     f1=lines.split()              # splitlines()   # pour compter lignes
     wordcount=wordcount+len(f1)
f.close()
print 'word count :', str(wordcount)
road = str(wordcount)
fw.write(road)
fw.close()

# resultat :
# word count : 6
#%_3008

haut

Compter le nombre de lignes de plusieurs fichiers


#!/usr/bin/python

#@_3009y_count_nombre_lignes_inplusieursfichiers!!forinif_splitlines_str_join

import os
import glob
import time

OUT="out-3009.txt"

PATHHOME="/Python27/tests-2017-11"

TIME=0.5

# z-1.txt :
# line1
# line2

# z-2.txt :
# data1
# data2
# data3


# deleter les anciens resultats

for currentFile in glob.glob('*'):
    e1 = "out-3009";
    if currentFile.startswith(e1):
        os.remove(currentFile)

print " ---> ok anciens fichiers deletes"
time.sleep(TIME)

##################

# nb lignes de plusieurs fichiers

newlist = [i for i in os.listdir(PATHHOME) if i[0:2] == "z-"]   

for file in newlist:
    file=file.strip()
    f24 = open(OUT , "a")

    linecount=0
    f23 = open(file , 'r')
    for lines in f23:
        w = lines.splitlines()
        linecount=linecount+len(w)

    print file , " : nb lignes : " , str(linecount)
    road = file , " : nb lignes : " , str(linecount)
    road2 = ' '.join(road)
    f24.write(road2 + "\n")
    f23.close()
    f24.close()

# resultat :
# z-1.txt  : nb lignes :  2
# z-2.txt  : nb lignes :  3

#%_3009

haut

Inserer un compteur de visites dans un script


#!/usr/bin/python

#@_3228y_count_visites_d_un_script!!int_read_str

# ecrire la valeur '0' dans un nouveau fichier texte : compteur.txt 

fichier = open('compteur.txt','r')
nbr_visiteurs = int(fichier.read())
fichier = open('compteur.txt','w')
fichier.write(str(nbr_visiteurs+1))
print nbr_visiteurs+1,'visites'
fichier.close()

# resultat :
# 3 visites    # augmente de 1 a chaque execution du script
#%_3228

haut

Inserer un trait de separation avant un pattern (exemple 1)


#!/usr/bin/python

#@_3010y_inserer_trait_separation_avant_pattern_exemple1!!withopen_ifin_join

RESULT5="3-search5.txt"
RESULT6="3-search6.txt"

# BUT : inserer un trait de separation si 1 pattern est present sur 1 ligne
#             au debut ou milieu de la ligne

# in.txt :
# 3264 FR Selon la profondeur de l'eau dans laquelle se deplace le tsunami
# 3264 UK Depending on the depth of the water in which the tsunami is traveling
# 3574 FR Tous ces effets sont bien connus et peuvent se produire lorsque la conscience se deplace dans un etat entre endormir completement et completement eveille.
# 3574 UK All of these effects are well known and may occur when one's consciousness shifts into a state between being fully asleep and fully awake .

with open (RESULT5 , 'r') as road2:
    fd3 = open (RESULT6 , 'w')     
    for ligne2 in road2:
        if "FR" in ligne2:
	    ligne2 = "---------------\n" , ligne2
            ligne2b = ''.join(ligne2)
            print ligne2b.strip()
            fd3.write(ligne2b)
        else:
            ligne2c = ''.join(ligne2)
            print ligne2c.strip()
	    fd3.write(ligne2c)
fd3.close()
road2.close()

# resultat :
# ---------------
# 3264 FR Selon la profondeur de l'eau dans laquelle se deplace le tsunami
# 3264 UK Depending on the depth of the water in which the tsunami is traveling
# ---------------
# 3574 FR Tous ces effets sont bien connus et peuvent se produire lorsque la conscience se deplace dans un etat entre endormir completement et completement eveille.
# 3574 UK All of these effects are well known and may occur when one's consciousness shifts into a state between being fully asleep and fully awake .

#%_3010

haut

Inserer un trait de separation avant un pattern (exemple 2)


#!/usr/bin/python

#@_3011y_inserer_trait_separation_avant_1_pattern!!withopen_replace

# in.txt :
# y-1150012.txt @
# data1
# y-1150012.txt @
# data2
# y-1150012.txt @
# data3

with open ("in.txt" , 'r') as road2:
    fd3 = open ("out.txt" , 'w')     
    for ligne2 in road2:
        ligne2 = ligne2.replace("y-", "-------------\ny-")
        print ligne2.strip()
        fd3.write(ligne2)
fd3.close()
road2.close()

# resultat
# -------------
# y-1150012.txt @
# data1
# -------------
# y-1150012.txt @
# data2
# -------------
# y-1150012.txt @
# data3

#%_3011

haut

Inserer un trait de separation dans un fichier si la colonne 1 change


#!/usr/bin/python

#@_3012y_inserer_trait_separation_ds_1_fichier_si_colonne_1_change!!readlines_range_len_split_startswith_break

# zin1.txt :
# accepter      @@      accept      @@      transitive verb
# accepter      @@      agree      @@      transitive verb
# accommoder      @@      accommodate      @@      transitive verb
# accompagner      @@      attend      @@      transitive verb
# accomplir      @@      accomplish      @@      transitive verb
# accomplir      @@      achieve      @@      transitive verb


# 1/2 : ajouter des lignes a la fin

open ("zin2.txt" , "w").write( open ("zin1.txt").read() + "end\nend\n")

######################

# 2/2 : inserer 1 trait a chaque changement ds colonne 1

fd30 = open ("zin2.txt" , 'r').readlines()
fd31 = open ("zin3.txt" , "w")     

for i in range(len(fd30)):

    element1 = fd30[i].split(" ")[0]
    element2 = fd30[i+1].split(" ")[0]
    if element2 == element1:
        print fd30[i].strip()
        fd31.write(fd30[i])

    if element2 != element1:
        print fd30[i] , "--------------------------------------"
        fd31.write(fd30[i] + "--------------------------------------\n")

    if element2.startswith("end"):
        break

fd31.close()

# resultat :
# accepter      @@      accept      @@      transitive verb
# accepter      @@      agree      @@      transitive verb
# --------------------------------------
# accommoder      @@      accommodate      @@      transitive verb
# --------------------------------------
# accompagner      @@      attend      @@      transitive verb
# --------------------------------------
# accomplir      @@      accomplish      @@      transitive verb
# accomplir      @@      achieve      @@      transitive verb
# --------------------------------------
#%_3012

haut

Inserer un trait de separation dans un fichier si la colonne 1 change - zip paste shift


#!/usr/bin/python

#@_3197y_inserer_trait_separation_ds_1_fichier_si_colonne_1_change!!splitlines_zip_split_break

IN="1-separe-trait2.txt"
PASTE="1-separe-trait-paste.txt"
RESULT="1-separe-trait-result.txt"

# IN :        # contient plusieurs colonnes

# accepter     %     accept     %     transitive verb @@
# accepter     %     agree     %     transitive verb @@
# accommoder     %     accommodate     %     transitive verb @@
# accompagner     %     attend     %     transitive verb @@
# accomplir     %     accomplish     %     transitive verb @@
# accomplir     %     achieve     %     transitive verb @@
# end @@
# end @@


# shift de la ligne 1 + PASTE (affichage cote a cote)
#      + insertion d'1 trait de separation

f1 = open (RESULT ,'w')    

data = open(IN , 'r').read().splitlines()
datanew = data[1:]                  # ligne 1 supprimee

w = zip(data , datanew)             # creation du PASTE
for j in w:
    road = ' '.join(j)

    line1 = road.split("@@")[0]
    line2 = road.split("@@")[1]

    col1line1 = line1.split()[0]
    col1line2 = line2.split()[0]
    
    if col1line1 == col1line2:
        print line1
        f1.write(line1 + "\n")
    
    if col1line1 != col1line2:
        print line1 , "\n--------------"
        road = line1 , "\n--------------"
        road2 = ''.join(road)
        f1.write(road2 + "\n")

    if "end" in road:
        break
    
f1.close()

# resultat :

# accepter     %     accept     %     transitive verb 
# accepter     %     agree     %     transitive verb  
# --------------
# accommoder     %     accommodate     %     transitive verb  
# --------------
# accompagner     %     attend     %     transitive verb  
# --------------
# accomplir     %     accomplish     %     transitive verb 
# accomplir     %     achieve     %     transitive verb  
# --------------
# end 

#%_3197

haut

Inserer un trait de separation dans un fichier si (n+1 < n) en colonne 3 - cumul deja fait


#!/usr/bin/python

#@_3013y_inserer_trait_separation_ds_1_fichier_si_colonne_3_change!!readlines_range_len_split_int_str_ifin_break

CONCAT1="4-inter1.txt"
CONCAT2="4-inter2.txt"
CONCAT3="4-inter3.txt"

################

# CONCAT1
# 1001 5 5
# 1002 7 12
# 1003 3 15
# 1004 6 6
# 1005 9 15
# 1006 4 19
# 1007 11 11
# 1008 5 16
# 1009 4 4
# 1010 8 12

# BUT :  separer par 1 trait si n+1 < n en colonne 3

# 1/2 : ajouter des lignes a la fin (pour eviter un message d'erreur)

open (CONCAT2 , "w").write(open (CONCAT1).read() + "end 0 0\nend 0 0\n")

######

# 2/2 : inserer 1 trait a chaque changement ds colonne 3

fd30 = open (CONCAT2 , 'r').readlines()
fd31 = open (CONCAT3 , "w")
for i in range(len(fd30)):

    element1 = fd30[i].split()[2]
    element2 = fd30[i+1].split()[2]
    w = int(element2) - int(element1)
    wb = str(w)

    if not "-" in wb:
        print fd30[i].strip()
        fd31.write(fd30[i])

    if "-" in wb:
        print fd30[i].strip() , "\n---------------------"
        fd31.write(fd30[i] + "---------------------" + "\n")

    if "end" in fd30[i]:
        break

# resultat :
# 1001 5 5
# 1002 7 12
# 1003 3 15
# ---------------------
# 1004 6 6
# 1005 9 15
# 1006 4 19
# ---------------------
# 1007 11 11
# 1008 5 16
# ---------------------
# 1009 4 4
# 1010 8 12
# ---------------------
# end 0 0

#%_3013

haut

Inserer un trait de separation dans un fichier si (n+1 = n+1) en colonne 3 - cumul deja fait


#!/usr/bin/python

#@_3195y_inserer_trait_separation_ds_1_fichier_si_2_colonnes_egales!!range_len_split_join_break

CONCAT1="1-concat1.txt"
CONCAT2="1-concat2.txt"
CONCAT3="1-concat3.txt"


# CONCAT1 :
# 1001 8 8
# 1002 6 14
# 1003 14 28
# 1004 3 3
# 1005 11 14
# 1006 5 19
# 1007 17 17
# 1008 7 24
# 1009 4 28
# 1010 10 10
# 1011 7 17


# ajouter 1 ligne au debut et a la fin de la concatenation

open(CONCAT2 , 'w').write("stm stm stm\n" + open(CONCAT1).read() + "end end end")

#############################

# inserer trait si n+1 = n+1 en colonne 3

fd12 = open (CONCAT2 , 'r').readlines()
fd13 = open (CONCAT3 , 'w')
for i in range(len(fd12)):

    element0 = fd12[i].split()[0]
    element1 = fd12[i].split()[1]
    element2 = fd12[i].split()[2]

    element3 = fd12[i+1].split()[1]
    element4 = fd12[i+1].split()[2]
    time.sleep(TIME)

    if element3 == element4:
        print element0 , element1 , element2 , "\n------------"
        road1 = element0 , element1 , element2 , "\n------------"
        road1b = ' '.join(road1)
        fd13.write(road1b + "\n")
    
    if element3 != element4:
        print element0 , element1 , element2
        road2 = element0 , element1 , element2
        road2b = ' '.join(road2)
        fd13.write(road2b + "\n")

    if "end" in fd12[i+1]:
        break

# resultat :
# stm stm stm 
# ------------
# 1001 8 8
# 1002 6 14
# 1003 14 28 
# ------------
# 1004 3 3
# 1005 11 14
# 1006 5 19 
# ------------
# 1007 17 17
# 1008 7 24
# 1009 4 28 
# ------------
# 1010 10 10
# 1011 7 17 
# ------------

#%_3195

haut

Ajouter une ligne au debut ou a la fin d'un seul fichier (exemple court)


#!/usr/bin/python

#@_3014y_ajouter_lignes_debut_ou_fin_d_1_fichier_one_line!!write_read

# 1/2_ ajouter ligne au debut d'1 fichier

open(OUT , "w").write("start\n" + open(IN).read())

# 2/2_ ajouter ligne a la fin d'1 fichier

open(OUT , "w").write(open(IN).read() + "end\n")

#%_3014

haut

Ajouter une ligne au debut et a la fin d'un seul fichier (exemple long)


#!/usr/bin/python

#@_3015y_ajouter_lignes_debut_et_fin_d_1_fichier!!withopen_write

import re

IN="in.txt"
OUT="out.txt"

# IN
# line1 data1
# line2 todelete data2
# line3 hello data3


fw = open(OUT , 'w')
with open(IN , 'r') as f1:
    print "start\nstart"
    fw.write("start\nstart" + "\n")

    for line in f1:
        line = re.sub("todelete" , "" , line)
        print line.strip()
        fw.write(line)

    print "end\nend"
    fw.write("end\nend" + "\n")

f1.close()
fw.close()

# resultat :
# start
# start
# line1 data1
# line2  data2
# line3 hello data3
# end
# end

#%_3015

haut

Ajouter une ligne au debut et a la fin de plusieurs fichiers


#!/usr/bin/python

#@_3016y_ajouter_ligne_debut_et_fin_de_inoutplusieursfichiers!!listdir_forinif_join

import os

# HOME
PATH="/Python27/tests-2017-09"

# z-1.txt
# 1001 8 8
# 1002 6 14

# z-2.txt
# 1004 3 3
# 1005 11 14

newlist = [i for i in os.listdir(PATH) if i[0:2] == "z-"]    # i[-4:] == ".txt"  # terminaison
print newlist      # ['z-1.txt', 'z-2.txt']

for file1 in newlist:
    fz1 = open("y-" + file1 , 'w')   

    print "start ---"               # ecrit "start" au debut des fichiers y-
    fz1.write("start ---" + "\n")    # ecrit "start" au debut des fichiers y-

    w1 = [line1 for line1 in open(file1)]

    print ''.join(w1)
    print "end ---"
    w1b = ''.join(w1)
    fz1.write(w1b)
    fz1.write("end ---" + "\n")    # ecrit "end" a la fin des fichiers y-
fz1.close()

# resultat : creation de fichiers  y-
   # y-z-1.txt :
# start ---
# 1001 8 8
# 1002 6 14
# end ---

   # y-z-2.txt :
# start ---
# 1004 3 3
# 1005 11 14
# end ---

#%_3016

haut

Ajouter un meme chiffre a toutes les fins de lignes


#!/usr/bin/python

#@_3017y_ajouter_1_meme_chiffre_fin_de_ligne!!read_split_join

# maxinb.txt :
# 40

# in.txt :
# line1416@ veils  2
# line1417@ ventures    venturing    ventured  4
# line1418@ verifies    verifying    verified  4
# line1419@ vibrates    vibrating    vibrated    vibrations  5


keyfile = open("maxinb.txt" , 'r').read().split()

f6 = open("in.txt" , 'r')
f7 = open("out2.txt" , 'w')
for line6 in f6:
    line6 = line6.strip()
    for j in keyfile:

        print line6 , "  " , j
        road = line6 , "  " , j
        road2 = ''.join(road)
        f7.write(road2 + "\n")

f7.close()

# resultat : out2.txt
# line1416@ veils  2  40
# line1417@ ventures    venturing    ventured  4  40
# line1418@ verifies    verifying    verified  4  40
# line1419@ vibrates    vibrating    vibrated    vibrations  5  40

#%_3017

haut

Ajouter du texte au debut ou fin de ligne d'un fichier avec condition


#!/usr/bin/python

#@_3018y_ajouter_texte_en_debut_ou_fin_de_ligne!!withopen_replace_format_match_format

# 1_ si une ligne debute par '(espace)[a-zA-Z]' alors la marquer devant par '%% (espace)'
# 2_ marquer toutes les fins de ligne par '@!!@'

import re

START="1-in.txt"
OUT="1-out.txt"

# START
# @ arise
# intransitive verb
# 1.	 ( appear ,  happen )     survenir ,    se presenter
#  a doubt arose in his mind   un doute est apparu dans son esprit
#  if the need arises   en cas de besoin
#  if the occasion arises   si l'occasion se presente
# 2.	 ( result )   resulter

with open(START, 'r') as before:
    town = open (OUT , "w")     
    for line in before:
        new = line.replace("\n" , "")
        new2 = "{0} @!!@".format(new)

        if re.match('^ [a-zA-Z]', line):
            syntaxe1 = ("%% " + new2.strip())
            print syntaxe1
            town.write("{0}\n".format(syntaxe1))
        else:
	    syntaxe2 = new2.strip()
            print syntaxe2
            town.write("{0}\n".format(syntaxe2))

before.close()
town.close()

# resultat
# @ arise  @!!@
# intransitive verb  @!!@
# 1.	 ( appear ,  happen )     survenir ,    se presenter   @!!@
# %% a doubt arose in his mind   un doute est apparu dans son esprit  @!!@
# %% if the need arises   en cas de besoin   @!!@
# %% if the occasion arises   si l'occasion se presente  @!!@
# 2.	 ( result )   resulter   @!!@
#%_3018

haut

Ajouter des digits "0" devant des chiffres pour qu'ils aient tous la meme longueur


#!/usr/bin/python

#@_3019y_ajouter_0_devant_chiffres_pour_1_meme_longueur!!withopen_split_len_join

IN="2-in.txt"
OUT="2-out.txt"

# IN
# 5 : data1 line1
# 13 : data2 line2
# 514 : data3 line3

with open(IN , "r") as fww:
    fd4b = open (OUT , "w")     
    for line3b in fww:
        b = line3b.split(" : ")[0]
        c = line3b.split(" : ")[1].strip()
        if len(b) == 1:
            print "000" + ''.join(b) + " " + c
            fd4b.write("00" + ''.join(b) + " " + c + "\n")

        if len(b) == 2:
            print "00" + ''.join(b) + " " + c
            fd4b.write("0" + ''.join(b) + " " + c + "\n")

        if len(b) == 3:
            print "0" + ''.join(b) + " " + c
            fd4b.write("" + ''.join(b) + " " + c + "\n")

fww.close()
fd4b.close()

# resultat
# 0005 : data1 line1
# 0013 : data2 line2
# 0514 : data3 line3

#%_3019

haut

Coller pattern unique inoutplusieursfichiers a colonne mots differents


#!/usr/bin/python

#@_3020y_coller_1seul_pattern_contenu_dans_fichier_a_colonne!!read_splitlines

LISTW="1-liste-w.txt"
#PREPO="1-prepo.txt"
PREPO="1-0-prepositions-46.txt"

# LISTW :
# w-abandoned.txt    # contenant :  abandoned
# w-abdicated.txt     # contenant :  abdicated
# w-abducted.txt      # contenant :  abducted

# PREPO :
# aboard
# about
# above

############## syntaxe 1

f16 = open(LISTW , 'r')      # liste des w-

for line16 in f16:
    line16 = line16.strip()

    new = open (line16).read().splitlines()
    for k in new:
#        print (k)
        f15 = open(PREPO , 'r')
        f17 = open("vw-" + k + ".txt" , 'w')
        for i in f15:
            i = i.strip()
#            print k , i.strip()
            road = k + " " + i
            f17.write(road + "\n")

f17.close()

########## syntaxe 2

f16 = open(LISTW , 'r')
for m in f16:
    m = m.strip()
#    print m
    f17 = open(m , 'r')

    new = open (m).read().splitlines()
    f18 = open("v" + m , 'w')
    for k in new:
        f15 = open(PREPO , 'r')

        for i in f15:
#            print k , i.strip()
            road = k + " " + i
            f18.write(road)

f18.close()

#%_3020

haut

Coller pattern devant chaque ligne


#!/usr/bin/python

#@_3021y_coller_titre_devant_ligne!!split_endswith

# BUT : coller devant toutes les lignes un pattern dont sa fin est "ing"

IN="in.txt"

# IN :
# Working in front of the blast furnace ,  I was exposed to scorching heat every day. - chaleur accablante - fournaise
# The worker objected to having to work late since he wouldn't get paid for the extra hours.
# I couldn't type ,  so I resorted to writing with a pen.

f = open (IN ,'r')
fw = open("out.txt" , 'w')

for lines in f:
    word=lines.split()              # splitlines()   # pour compter lignes
    for g in word:

        if g.endswith("ing"):
            print g , " %%% " , lines.strip()
            road = g + " %%% " + lines
	    fw.write(road)
fw.close()

# resultat :
# Working  %%%  Working in front of the blast furnace ,  I was exposed to scorching heat every day. - chaleur accablante - fournaise
# scorching  %%%  Working in front of the blast furnace ,  I was exposed to scorching heat every day. - chaleur accablante - fournaise
# having  %%%  The worker objected to having to work late since he wouldn't get paid for the extra hours.
# writing  %%%  I couldn't type ,  so I resorted to writing with a pen.

#%_3021

haut

Marquer un titre et le repeter sur lignes suivantes


#!/usr/bin/python

#@_3022y_coller_titre_devant_ligne!!readline_while_break_startswith_split_flag_join

IN1="in.txt"
IN2="in-2.txt"
OUT="out.txt"

PATTERN="grec"

# START = in.txt :
# grec vexecgct tape 6014
# 200 5 1000 col4 col5 col6
# 201 5 900 col4 col5 col6
# 202 5 850 col4 col5 col6
# 203 5 830 col4 col5 col6
# 204 5 810 col4 col5 col6
# data3 col2 col3 col4 col5
# data4 col2 col3 col4 col5
# grec vexecgct tape 6015
# info1a col2 col3 col4 col5
# info2a col2 col3 col4 col5
# grec vexecgct tape 6016
# data7 124 5476 819 337
# data8 173 2416 379 344
# data9 22 713 4389 773


# ajouter 1 ligne vide en ligne 1

open (IN2 , "w").write ( " \n" + open (IN1).read())  

#######################

f1 = open (IN2 , 'r')
f2 = open (OUT , "w")
line = f1.readline()         # indispensable

while 1:
    line = f1.readline()    # indispensable
    line = line.rstrip()        # indispensable

    if not line:         # arret a la fin du fichier
        break
    
    if line.startswith(PATTERN):
        w = line.split()[3]           # variable memorisee
        flag=0                # indispensable

        flag=1                # indispensable        
#        z = line                               # sans separation  - schema de la ligne a ecrire
        m = "--------------------\n" , line      # avec separation - schema de la ligne a ecrire
        z = ''.join(m)                           # avec separation

    if not line.startswith(PATTERN):
        y = w , line              # schema de la ligne a ecrire  (en tuple)
        z = ' '.join(y)         # ok flag est deja = 1
        
    if flag:
        print z                # ligne finale ecrite
        f2.write(z + "\n")
f2.close()

# resultat :
# --------------------
# grec vexecgct tape 6014
# 6014 200 5 1000 col4 col5 col6
# 6014 201 5 900 col4 col5 col6
# 6014 202 5 850 col4 col5 col6
# 6014 203 5 830 col4 col5 col6
# 6014 204 5 810 col4 col5 col6
# 6014 data3 col2 col3 col4 col5
# 6014 data4 col2 col3 col4 col5
# --------------------
# grec vexecgct tape 6015
# 6015 info1a col2 col3 col4 col5
# 6015 info2a col2 col3 col4 col5
# --------------------
# grec vexecgct tape 6016
# 6016 data7 124 5476 819 337
# 6016 data8 173 2416 379 344
# 6016 data9 22 713 4389 773

#%_3022

haut

Habillage pour capture des infos sur les lignes des paragraphes_part3


#!/usr/bin/python

#@_3024y_capture_ligne_et_trier!!readlines_range_len_sort_split

FILE6="1-array-1k.txt"
FILE7="1-array-1m.txt"
FILE8="1-array-1n.txt"
FILE9="1-array-1p.txt"

# FILE6 :
# 0 % 6014 grec
# 1 % 6014 : 200 5 1000 col4 col5 col6
# 2 % 6014 : 201 5 900 col4 col5 col6
# 3 % 6014 : 202 5 850 col4 col5 col6
# 4 % 6014 : 203 5 830 col4 col5 col6
# 5 % 6014 : 204 5 810 col4 col5 col6
# 6 % 6014 : data3 col2 col3 col4 col5
# 7 % 6014 : data4 col2 col3 col4 col5
# 0 % 6015 grec
# 1 % 6015 : info1a col2 col3 col4 col5
# 2 % 6015 : info2a col2 col3 col4 col5
# 0 % 6016 grec
# 1 % 6016 : data7 124 5476 819 337
# 2 % 6016 : data8 173 2416 379 344
# 3 % 6016 : data9 22 713 4389 773
# 0 % 6016 grec

# grep de la ligne avant "grec"

#+_3024_capture_ligne!!readlines_range_len_ifin
fd30 = open (FILE6 , 'r').readlines()
fd31 = open (FILE7 , "w")     

for i in range(len(fd30)):

    if "grec" in fd30[i]:
        print fd30[i-1].strip()
	fd31.write(fd30[i-1])

fd31.close()
#-

##########################

# trier

d_list = [line2.strip() for line2 in open (FILE7)]

f3 = open (FILE8 , 'w')    

d_list.sort(key = lambda ligne: ligne.split('%')[1], reverse=False)
print "--------------------------"

for line2 in d_list:
    line2 == ""
    print line2
    f3.write(line2 + "\n")
f3.close()

##########################

# deleter ligne

#+_3024_deleter_ligne!!readlines_ifin_split
f4 = open (FILE8 , 'r')
lines = f4.readlines()
f4.close()

f5 = open (FILE9 , 'w')       # on peut ecrire ds le meme fichier si on veut
print "--------------------------"

for linehab1 in lines:
    if not "grec" in linehab1:
        print linehab1.strip().split(":")[0]
	f5.write(linehab1.split(":")[0] + "\n")
f5.close()
#-

# resultat : 7 lignes pour 6014 ; 2 lignes pour 6015 ; 3 lignes pour 6016
# 7 % 6014
# 2 % 6015
# 3 % 6016

#%_3024

haut

Cloner une portion de ligne titree et la repeter au debut de plusieurs lignes (exemple 1)


#!/usr/bin/python

#@_3025y_capture_titre_et_le_marquer_sur_lignes_suivantes!!readline_while_break_startswith_join_flag

IN1="in1.txt"
IN2="in2.txt"
OUT="out.txt"

PATTERN="Receiver"

# START = in1.txt :
# Receiver 1 : titre1
# data1
# data2
# Receiver 2 : titre2
# data3
# data4


# ajouter 1 ligne vide en ligne 1

open (IN2 , "w").write ( " \n" + open (IN1).read())  

#######################

f1 = open (IN2 , 'r')
f2 = open (OUT , "w")
line = f1.readline()         # indispensable

while 1:
    line = f1.readline()    # indispensable
    line = line.rstrip()        # indispensable

    if not line:         # arret a la fin du fichier
        break
    
    if line.startswith(PATTERN):
        w = line            # variable memorisee
        flag=0                # indispensable

        flag=1                # indispensable        
#        z = line                               # sans separation  - schema de la ligne a ecrire
        m = "--------------------\n" , line      # avec separation - schema de la ligne a ecrire
        z = ''.join(m)                           # avec separation

    if not line.startswith(PATTERN):
        y = w , line              # schema de la ligne a ecrire  (en tuple)
        z = ' '.join(y)         # ok flag est deja = 1
        
    if flag:
        print z                # ligne finale ecrite
        f2.write(z + "\n")
f2.close()

# resultat :
# --------------------
# Receiver 1 : titre1
# Receiver 1 : titre1 data1
# Receiver 1 : titre1 data2
# --------------------
# Receiver 2 : titre2
# Receiver 2 : titre2 data3
# Receiver 2 : titre2 data4

#%_3025

haut

Cloner une portion de ligne titree et la repeter en entete (exemple 2)


#!/usr/bin/python

#@_3026y_capture_titre_et_le_marquer_sur_lignes_suivantes!!readline_while_break_startswith_join_flag

IN1="in3026.txt"
IN2="in3026-2.txt"
OUT="out.txt"

PATTERN="newy"

# START = in3026.txt :
# newy-109-accomplish- | transitive verb
# 1) accomplir , executer
# 2) realiser
# 3) effectuer
# 4) venir a bout de , mener a bonne fin
# newy-57-accord- | transitive verb
# 1) accorder
# 2) reserver


# ajouter 1 ligne vide en ligne 1

open (IN2 , "w").write ( " \n" + open (IN1).read())  

#######################

f1 = open (IN2 , 'r')
f2 = open (OUT , "w")
line = f1.readline()         # indispensable

while 1:
    line = f1.readline()    # indispensable
    line = line.rstrip()        # indispensable

    if not line:         # arret a la fin du fichier
        break
    
    if line.startswith(PATTERN):
        w = line            # variable memorisee
        flag=0                # indispensable

        flag=1                # indispensable        
#        z = line                               # sans separation  - schema de la ligne a ecrire
        m = "--------------------\n" , line      # avec separation - schema de la ligne a ecrire
        z = ''.join(m)                           # avec separation

    if not line.startswith(PATTERN):
        y = w , line              # schema de la ligne a ecrire  (en tuple)
        z = ' '.join(y)         # ok flag est deja = 1

    if flag:
        print z                # ligne finale ecrite
        f2.write(z + "\n")
f2.close()

# resultat :
# --------------------
# newy-109-accomplish- | transitive verb
# newy-109-accomplish- | transitive verb 1) accomplir , executer
# newy-109-accomplish- | transitive verb 2) realiser
# newy-109-accomplish- | transitive verb 3) effectuer
# newy-109-accomplish- | transitive verb 4) venir a bout de , mener a bonne fin
# --------------------
# newy-57-accord- | transitive verb
# newy-57-accord- | transitive verb 1) accorder
# newy-57-accord- | transitive verb 2) reserver

#%_3026

haut

Cloner une portion de ligne titree et la repeter (sur plusieurs fichiers) (exemple 3)


#!/usr/bin/python

#@_3027y_ajouter_cloner_titre_et_le_repeter_inoutplusieursfichiers!!forinopen_readlines_ifin_split

import os
import re

LISTTOTALSTUVWXYPHRASES="1-0-liste-stuvwxyphrases.txt"
LISTTOTALRSTUVWXYPHRASES="1-0-liste-rstuvwxyphrases.txt"

# exemple de id17 :
# pos @@ verb %%
# subc @@ (transitive)
# def @@ to forsake completely; desert; leave behind
# quote @@ to abandon a baby

for id17 in open(LISTTOTALSTUVWXYPHRASES):
    id17=id17.strip()
    id17b=id17.split("-")[1].split(".")[0]
#    print id17b
    os.chdir(PATHRSTUVWXYPHRASES)
    f18 = open("rstuvwxy-" + id17b + ".txt" , "w")

    os.chdir(PATHSTUVWXYPHRASES)
    f17 = open(id17 , "r").readlines()

    for line14 in f17:
        line14 = line14.strip()

	if "pos" in line14:
	    inter1 = line14.split("@@")[1].split("%%")[0]
	    inter2 = line14.split("@@")[1]

#	    print inter1 , id17b , " @@ " , inter2
	    f18.write(inter1 + id17b + " @@ " + inter2 + "\n")
	if not "pos" in line14:
	    inter2 = line14.split("@@")[1]

#	    print inter1 , id17b , " @@ " , inter2
	    f18.write(inter1 + id17b + " @@ " + inter2 + "\n")

f18.close()

# resultat :
# verb abandon @@ verb %%
# verb abandon @@ (transitive)
# verb abandon @@ to forsake completely; desert; leave behind
# verb abandon @@ to abandon a baby

#%_3027

haut

Grouper toutes les lignes ayant meme colonne 1 (d'1 seul fichier)


#!/usr/bin/python

#@_3028y_grouper_tout_sur_1_ligne_si_meme_colonne_1!!setdefault_append_iteritems_join

# line1@abandons
# line1@abandoning
# line1@abandoned
# line1@-
# line1@-
# line1115@ringing
# line1115@ring
# line1115@rings
# line1115@ringing
# line1115@ringed
# line1115@-
# line1115@-


d={}
f32 = open ("out.txt" , "w")    
for line31 in open ("in.txt"):
#    print line31.strip()

    line31=line31.strip().split("@")
    d.setdefault(line31[0],[])
    d[line31[0]].append(line31[1])

for i,j in d.iteritems():
    i = i.replace("line" , "line ")
    print i + " @@@ " + " ".join(j)
    f32.write(i + " @@@ " + " ".join(j) + "\n")
f32.close()

# resultat :
# line 1115 @@@ ringing ring rings ringing ringed - - - -
# line 1 @@@ abandons abandoning abandoned - - -

#%_3028

haut

Grouper toutes les lignes ayant meme colonne 1 (de plusieurs fichiers)


#!/usr/bin/python

#@_3029y_grouper_tout_sur_1_ligne_si_meme_colonne_1!!openr_split_setdefault_append_iteritems_join

LISTE="liste-files.txt"
OUT="out.txt"

# BUT : grouper tout sur 1 ligne

# LISTE :
# file1.txt
# file2.txt

# file1.txt
# abide  @@@  tolerate
# abide  @@@  last
# abide  @@@  stay

# file2.txt
# accept  @@@  receive
# accept  @@@  take on
# accept  @@@  say yes to
# accept  @@@  acknowledge
# accept  @@@  stand
# accept  @@@  welcome

d={}
fout = open (OUT , "w")    
for w in open (LISTE):
    w = w.strip()
    print w

    for line in open (w):
        line = line.strip().split("@@@")
        d.setdefault(line[0],[])
        d[line[0]].append(line[1])

for i,j in d.iteritems():

    print i + "@@@" + " -".join(j)
    fout.write(i + "@@@" + " -".join(j) + "\n")

fout.close()

# resultat : OUT
# accept  @@@  receive -  take on -  say yes to -  acknowledge -  stand -  welcome
# abide  @@@  tolerate -  last -  stay
#%_3029

haut

Grouper toutes les lignes sur une seule ligne (de plusieurs fichiers)


#!/usr/bin/python

#@_3030y_grouper_tout_le_fichier_sur_1_ligne_de_inplusieursfichiers!!oslistdir_ifin_withopen_join

import os

PATHHOME="/Python27/TESTS"

# xyz001.txt :
# Data1
# Data2
# Data3
# 100
# 101
# 102

# xyz002.txt :
# Newdata1
# Newdata2
# Newdata3
# 200
# 201
# 202

f1 = os.listdir(PATHHOME)
fw = open ("out.txt" , "w")     

for file in f1:
    if "xyz" in file:

        with open(file) as f2:
            w = " ".join(line.strip() for line in f2)
            print w
            fw.write(w + "\n")

fw.close()
f2.close()

# resultat :
# Data1 Data2 Data3 100 101 102
# Newdata1 Newdata2 Newdata3 200 201 202
#%_3030

haut

Degrouper : coller la colonne 1 a chaque autre colonne


#!/usr/bin/python

#@_3031y_degrouper_coller_col1_aux_autres_col!!read_splitlines_split

# in.txt
# line1481@ writes    writing    wrote
# line1483@ sings  singing    sang


mylist3 = open("in.txt").read().splitlines()
f30 = open("out.txt" , 'w')
for i3 in mylist3:
    for word3 in i3.split():
        if "@" in word3:
            mark = word3      # marqueur = colonne1
        if not "@" in word3:
            print mark , word3
            w = mark + word3
            f30.write(w + "\n")
f30.close()

# resultat
# line1481@ writes
# line1481@ writing
# line1481@ wrote
# line1481@ -
# line1483@ sings
# line1483@ singing
# line1483@ sang
# line1483@ -
# line1483@ -

#%_3031

haut

Capturer un pattern s'il est contenu dans un fichier (IF ANY)


#!/usr/bin/python

#@_3032y_capture_pattern_si_contenu_dans_1_fichier_IF_ANY!!read_splitlines_withopen_ifany_inforin

# 1-ing.txt :
# working as
# working for

# 1-start.txt :
# The protesters went to Washington to march against increased taxes.
# I'm working as a teaching assistant to support myself as a graduate student in order to get an advanced degree.
# Let us mark the occasion by opening a bottle of champagne.
# An advantage of working for the company is that they provide a pension scheme for their employees.
# Wear this oxygen mask till the pressure returns to normal.


# capturer dans  1-start.txt  les patterns contenus dans cette liste : good_words
good_words = open ("1-ing.txt").read().splitlines()

with open("1-start.txt") as oldfile:
    newfile = open ("1-out.txt" , 'w')     
    for line in oldfile:
#        print line.strip()

        if any(good_word in line for good_word in good_words):
            print line.strip()
            newfile.write(line)
oldfile.close()
newfile.close()

# resultat :
# I'm working as a teaching assistant to support myself as a graduate student in order to get an advanced degree.
# An advantage of working for the company is that they provide a pension scheme for their employees.

#%_3032

haut

Capturer un pattern s'il est contenu dans un fichier (FOR IN IF)


#!/usr/bin/python

#@_3033y_capture_pattern_si_contenu_dans_1_fichier_FOR_IN_IF!!read_splitlines_withopen_forinif

import os
import sys
import re
import glob

STARTDICO="dico.txt"

SEARCH1="search1.txt"
SEARCH2="search2.txt"
SEARCH3="search3.txt"
SEARCH4="search4.txt"
SEARCH5="search5.txt"


# SEARCH1 :  traduction FR :
# 2465 FR J'ai conclu qu'il ne serait pas approprie de le faire, compte tenu de toutes les circonstances.
# 544 FR Compte tenu de cela, vous pourriez generer des avantages considerables si vous concevez un regime incitatif sur mesure
# 1693 FR Lorsque le gouvernement central alloue des ressources

#############################

# 1/4 noter les numeros de lignes FR et preparer les memes numeros en remplacant FR par UK

f1 = open(SEARCH1 , "r")
fw1 = open(SEARCH2 , "w")
for line1 in f1:
    w0 = line1.split()[0]
    fw1.write(w0 + " UK" + "\n")
fw1.close()

# SEARCH2 :
# 2465 UK
# 544 UK
# 1693 UK

########################################

# 2/4 rechercher dans le dico la traduction UK

good_words = open (SEARCH2).read().splitlines()

with open(STARTDICO) as oldfile:
    newfile = open (SEARCH3 , 'w')     
    for line in oldfile:
        for good_word in good_words:
            if line.startswith(good_word):

                newfile.write(line)
oldfile.close()
newfile.close()

# SEARCH3 :  traduction UK
# 544 UK Bearing this in mind, you could accrue considerable benefits if you design a tailored incentive scheme
# 1693 UK When the central government allocates resources
# 2465 UK I concluded that it would not be appropriate to do so, having regard to all the circumstances.


#######################

# 3/4 concatener  SEARCH1  SEARCH3

filenames = [SEARCH1 , SEARCH3]
with open(SEARCH4 , 'w') as outfile:
    for fname in filenames:
        with open(fname) as infile:
            outfile.write(infile.read())
outfile.close()

##################

# 4/4 trier

fd = open(SEARCH4 , 'r')
fw = open(SEARCH5 , 'w')

t = fd.read().splitlines()

d = sorted(t)
#d = sorted(t , reverse=True)    # ordre inverse

print '\n'.join(d)
fw.write('\n'.join(d))

fw.close()

# resultat : SEARCH5
# 1693 FR Lorsque le gouvernement central alloue des ressources
# 1693 UK When the central government allocates resources
# 2465 FR J'ai conclu qu'il ne serait pas approprie de le faire, compte tenu de toutes les circonstances.
# 2465 UK I concluded that it would not be appropriate to do so, having regard to all the circumstances.
# 544 FR Compte tenu de cela, vous pourriez generer des avantages considerables si vous concevez un regime incitatif sur mesure
# 544 UK Bearing this in mind, you could accrue considerable benefits if you design a tailored incentive scheme

#%_3033

haut

Capturer un pattern dans plusieurs fichiers (FOR IN IF)


#!/usr/bin/python

#@_3034y_capture_pattern_inplusieursfichiers!!oslistdir_forinif_sorted_replace_join

import os

PATHHOME="/Python27/TESTS"
OUT="out.txt"

# uyz-1.txt :
# Missfire SP 2233 , 4365
# G3 disabled data1
# autofire SP 4512 , 5227
# disabled SP 2325
# ------------- SP

# uyz-2.txt :
# disabled data1 SP 4431
# autofire
# disabled SP 2325 SP 4512 , 5227
# Missfire SP 2233 , 4365

#######

# grep avec 'for in if'

newlist = [i for i in os.listdir(PATHHOME) if i[0:3] == "uyz"]
newlist2 = sorted(newlist)
fw = open ("out-uyz.txt" , "w") 

for file1 in newlist2:
    w1 = [
    line1.replace("Missfire" , "").replace("disabled" , "").replace("autofire" , "")
    for line1 in open(file1)
    if "SP" in line1 or "shot" in line1 or "Shot" in line1
    ]   
    print ''.join(w1)
    w1b = ''.join(w1)
    fw.write(w1b)
fw.close()

# resultat :
# SP 2233 , 4365
# SP 4512 , 5227
# SP 2325
# ------------- SP
# data1 SP 4431
# SP 2325 SP 4512 , 5227
# SP 2233 , 4365

#%_3034

haut

Capturer lignes dans un fichier en excluant patterns (search)


#!/usr/bin/python

#@_3035y_capture_lignes_inoutplusieursfichiers_avec_forinif_search!!readlines_forinif_search_join

import re

# 4-data1.txt :
# line1
# line2 data 1
# line3
# data 3

# 4-data2.txt :
# sheet1
# data
# sheet3


fr = open ("1-liste4.txt" , 'r')    
for roady in fr:
    roady = roady.strip()

# creation de fichiers w4-
    fd30 = open (roady , 'r').readlines()     
    fd31 = open ("w" + roady , 'w')     

    w = [i for i in fd30 if not re.search("data" , i)]

    print ''.join(w).strip()
    fd31.write(''.join(w))

# resultat :
# line1
# line3
# sheet1
# sheet3

#%_3035

haut

Coller nom fichier devant lignes (sortie plusieurs fichiers) (replace - split - if in)


#!/usr/bin/python

#@_3036y_coller_nom_fichier_devant_lignes_inoutplusieursfichiers!!openr_replace_split_ifin

import os
import glob
import time

# partir de plusieurs fichiers
# faire cohabiter ds une boucle " for " :  replace - split - ifin

LISTEXY="1-liste-xy.txt"

TIME=1

# xy-file1.txt :
# data1>verbe1
# data2>verbe2
# data3>word1
# data4>word2
# data5>li

# xy-file2.txt :
# data6>verbe6
# data7>verbe7
# data8>word1
# data9>word3
# data10>li


# deleter anciens verbes
for currentFile in glob.glob('*'):
    e5 = "wxy-";
    if currentFile.startswith(e5):
        os.remove(currentFile)

print " ---> ok anciens fichiers deletes"
time.sleep(TIME)

###################

# os.chdir(PATHHOME)
for id18 in open(LISTEXY):
    id18=id18.strip()
    id18b=id18.split("-")[1].split(".")[0]

#     os.chdir(PATHXY)
    for line18 in open(id18 , 'r'):
        line18 = line18.replace(">" , " ").split(" ")[1]

        if not "word1" in line18 and not "li" in line18:

#             os.chdir(PATHWXY)
            f19 = open("w" + id18 , "a")     # "a" pour accumulation
            f19.write(id18b + " " + line18)

f19.close()

# resultat :
#   wxy-file1.txt :
# file1 verbe1
# file1 verbe2
# file1 word2

#   wxy-file2.txt :
# file2 verbe6
# file2 verbe7
# file2 word3

#%_3036

haut

Capturer patterns dans plusieurs fichiers (FOR IN IF)


#!/usr/bin/python

#@_3038y_capture_pattern_inplusieursfichiers!!forinif_ifany_join

import os

PATHHOME="/Python27/tests-2017-10"

good_words = open("1-good-words.txt").read().splitlines()

# 1-good-words.txt :
# disabled

# uyz-1.txt :
# Missfire SP 2233 , 4365
# G3 disabled data1
# autofire SP 4512 , 5227
# disabled SP 2325
# ------------- SP

# uyz-2.txt :
# disabled data1 SP 4431
# autofire
# disabled SP 2325 SP 4512 , 5227
# Missfire SP 2233 , 4365


newlist = [i for i in os.listdir(PATHHOME) if i[0:3] == "uyz"]
newlist2 = sorted(newlist)
    
fz1 = open("out-3038.txt" , 'w')

for file1 in newlist2:
    w1 = [
    line1
    for line1 in open(file1)  
    if any(good_word in line1 for good_word in good_words)
    ]

    w1b = ''.join(w1)
    print w1b    
    fz1.write(w1b)
fz1.close()
    
# resultat :
# G3 disabled data1
# disabled SP 2325
# disabled data1 SP 4431
# disabled SP 2325 SP 4512 , 5227

#%_3038

haut

Capturer un pattern : GREP avec 'FOR IN IF'


#!/usr/bin/python

#@_3203y_grep_avec_forinif!!forinif_search_join

import re
import os

PATH="/Python27/tests-2017-09"

PATTERN="%%-"

# 1-in1.txt :
# %%-85 title1
# data1
# line3
# %%-62 title2
# data2

OUTONEFILE="2-result-one-file.txt"       # activer si ecriture ds mono fichier --> accumulation)
fz1 = open(OUTONEFILE , 'w')            # activer si ecriture ds mono fichier --> accumulation)

newlist = [i for i in os.listdir(PATH) if i[0:5] == "1-in1"]       # i[-4:] == ".txt"  # terminaison

for file1 in newlist:

    w1 = [
    line1
    for line1 in open(file1)           # main line 
    if re.search(PATTERN , line1)
    ]

    print ''.join(w1)
    w1b = ''.join(w1)     # adapter le '\n' avec le resultat (depend du split)
    fz1.write(w1b)
fz1.close()

# resultat :
# %%-85 title1
# %%-62 title2

#%_3203

haut

Capturer un pattern : GREP par accumulation +=


#!/usr/bin/python

#@_3039y_capture_grep_accumulation!!openr_ifin_+=

PATTERN = "achieve"     # pattern recherche
contenu = ""

f1 = open ("in.txt" , "r")
f2 = open ("out.txt" , 'w')    

for line in f1:
    if PATTERN in line:
        contenu += line
f2.write(contenu)     # caller cette ligne a colonne 0

f2.close()

# resultat
# we really achieved something today   on a vraiment bien avance aujourd'hui
#  we need to build on our achievements   il faut consolider nos succes
#%_3039

haut

Capturer un pattern : GREP avec SEARCH (permet replace)


#!/usr/bin/python

#@_3040y_capture_grep_search_inplusieursfichiers!!openr_search_format_replace

import re

# IN
# lang="fr" >
# content=text
# abandon - English-French Dictionary WordReference.com
# description content=abandon - traduction anglais-franšais
# Language content=fr


PATTERN = "English-French Dictionary WordReference"     # pattern recherche

os.chdir(PATHHOME)
f2 = open(VERIF1 , 'w')

for id1 in open(LISTEORIGTRIE):
    id1=id1.strip()
#    print id1
    os.chdir(PATHZ)
    f1 = open("z-" + id1 + ".txt" , "r")

    for line1 in f1:
        if re.search("{0}".format(PATTERN) , line1):
            line1 = line1.replace("- English-French Dictionary WordReference.com" , "")
            print id1 , " : " , line1.strip()
            f2.write(id1 + " : " + line1)

f2.close()

# resultat
#  abandon : abandon

#%_3040

haut

Capturer un pattern : utilise l'objet IN


#!/usr/bin/python

#@_3041y_capture_pattern_rawinput!!rawinput_withopen_ifin_true_false

w1 = raw_input("Input the English word 1/2 : ")
w2 = raw_input("Input the English word 2/2 : ")

# open the file using `with` context manager,
# it'll automatically close the file for you

with open("in.txt") as f:
    found = False
# iterate over the file one line at a time (memory efficient)
    for line in f:

        if w1 in line or w2 in line:
            print line.strip()
            found = True
    if not found:
        print('The translation cannot be found!')
f.close()
#%_3041

haut

Capturer un pattern avec FIND


#!/usr/bin/python

#@_3042y_capture_pattern_rawinput!!rawinput_withopen_startswith_find

w = raw_input("Input the English word: ")

with open("in.txt") as f:
    found = False
# iterate over the file one line at a time (memory efficient)
    for line in f:

        if line.startswith(w + " "):
            print line.strip()
        if line.find(" " + w + " ") != -1:
            print line.strip()

f.close()
#%_3042

haut

Capturer des patterns avec lignes avant et apres (precedentes et suivantes) (range)


#!/usr/bin/python

#@_3043y_capture_pattern_lignes_avant_apres_range!!readlines_range_len

IN="in.txt"
OUT="out.txt"

PATTERN="element"


c=1
data = open (IN).readlines()
fp = open (OUT,"w")     
for i in range(len(data)):

    if PATTERN in data[i]:

        print data[i].strip()
        fp.write(data[i-3])
        fp.write(data[i-2])
        fp.write(data[i-1])
        fp.write(data[i])
        fp.write(data[i+1])
        fp.write(data[i+2])
        fp.write(data[i+3])
        fp.write(data[i+4])
        fp.write(data[i+5])
        fp.write("\n")
        fp.write("@@@@@@vvvvvvv   occurrence : " + str(c+1) + "\n")
        fp.write("\n")
        c=c+1

print "  --> resultat ds : " , OUT
fp.close()
#%_3043

haut

Capturer plusieurs patterns dans un fichier


#!/usr/bin/python

#@_3044y_capture_patterns_multi_regex!!withopen_search_group

import re

IN="in.txt"
OUT="out.txt"

# IN :

# @ arise
# intransitive verb
# 1.       [appear, happen]     survenir,   se presenter
#  a doubt arose in his mind   un doute est apparu dans son esprit
#  if the need arises   en cas de besoin
#  if the occasion arises   si l'occasion se presente
# 2.       [result]   resulter
#  a problem that arises from this decision   un probleme qui resulte OR decoule de cette decision
#  matters arising from the last meeting   des questions soulevees lors de la derniere reunion
# 3.       (literary) [person]     se lever
# [sun]     se lever, paraitre



regex = ["@ .*" , "^\[.*" , "^\d.*"]

with open (IN, 'r') as road:
    fd = open (OUT, 'w')     
    for ligne in road:
        for pattern in regex:
            m = re.search(pattern, ligne)
            if m:
                code = m.group(0)
                print code
                fd.write(code + "\n")

road.close()
fd.close()

# resultat :

# @ arise
# 1.       [appear, happen]     survenir,   se presenter
# 2.       [result]   resulter
# 3.       (literary) [person]     se lever
# [sun]     se lever, paraitre
#%_3044

haut

Capturer un pattern , le separateur delimitant la zone de capture


#!/usr/bin/python

#@_3045y_capture_pattern_avec_search!!withopen_search_group

import re

START="in.txt"
OUT="out.txt"

# START
# he doesn't see his drinking as a problem   il ne se considere pas comme un alcoolique
# All things considered ,  he's quite nice   Tout compte fait ,  il est aimable.
# ( believe )     croire ,    considerer
# do you count her as a friend ?   la consideres-tu comme une amie ?
# 3.       ( bear in mind  points ,  facts )   prendre en consideration
# I consider it money well spent   je considere que c'est un bon investissement


regex = [".*consider.*"]

with open (START, 'r') as road:
    fd = open (OUT, 'w')     
    for ligne in road:
        m = re.search('.*(?<=   )', ligne)
        if m:
            code = m.group(0)
            for pattern in regex:
                n = re.search(pattern, code)
                if n:
                    code2 = n.group(0)
                    print code2
                    fd.write(code2 + "\n")

road.close()
fd.close()

# resultat
# All things considered ,  he's quite nice
# I consider it money well spent
#%_3045

haut

Capturer des patterns sur des portions ou lignes entieres (exemple 1 et 2)


#!/usr/bin/python

#@_3046y_capture_pattern_rawinput!!rawinput_withopen_ifin_search_group

PATH1="1-0-LAR-CROCHETS-5-13.txt"
OUT1="1-out1.txt"
OUT2="1-out2.txt"

# exemple 1

print ""
print "---> BUT : rechercher 2 mots avec raw_input et if in"
print "---> BUT : recherche sur toute la ligne"
print "---> BUT : sans portion , sans syntaxe exacte"
print "---> si pas de 2eme mot : ne pas taper return mais * ou @"
print ""

a1 = raw_input("entrer 1/2 mot : ")
a2 = raw_input("entrer 2/2 mot : ")

with open (PATH1, 'r') as road1:
    fd1 = open (OUT1, 'w')     
    for ligne in road1:
        if a1 in ligne or a2 in ligne:
            print ligne.strip()
            fd1.write(ligne)

fd1.close()
road1.close()

###############################

# exemple 2

print ""
print "---> BUT : rechercher 2 mots avec raw_input et search"
print "---> BUT : recherche dans 2 lignes differentes"
print "---> BUT : syntaxe exacte dans 1 portion delimitee : entre 2 parentheses"
print "---> si pas de 2eme mot : ne pas taper return mais * ou @"
print ""

a1 = raw_input("entrer 1/2 mot : ")
a2 = raw_input("entrer 2/2 mot : ")

with open (PATH1, 'r') as road2:
    fd2 = open (OUT2, 'w')     
    for ligne2 in road2:
        m = re.search(' \( (.*?) \) ', ligne2)    # recherche entre 2 parentheses
        if m:
            code2 = m.group(0)
            if a1 in code2 or a2 in code2:
                print ligne2.strip()
                fd2.write(ligne2)

fd2.close()
road2.close()
#%_3046

haut

Capturer des patterns avec "fnmatch" (resultat en liste)


#!/usr/bin/python

#@_3047y_capture_pattern_fnmatch_resultat_en_liste!!forinif_fnmatch

from fnmatch import fnmatchcase

addresses = [
    '5412 N CLARK ST',
    '1060 W ADDISON ST',
    '1039 W GRANVILLE AVE',
    '2122 N CLARK ST',
    '4802 N BROADWAY',
]                           # attention au crochet

a = [addr for addr in addresses if fnmatchcase(addr, '* ST')]

print a

# resultat
# ['5412 N CLARK ST', '1060 W ADDISON ST', '2122 N CLARK ST']

########

b = [addr for addr in addresses if fnmatchcase(addr, '54[0-9][0-9] *CLARK*')]

print b

# resultat
# ['5412 N CLARK ST']
#%_3047

haut

Capturer avec syntaxe search-replace


#!/usr/bin/python

#@_3048y_capture_pattern_search_replace!!withopen_search_replace

import re

INTER4="inter4.txt"
INTER5="inter5.txt"

# INTER4 :
# Line 1
# @@ data
# %@
# Line 4
# End

with open (INTER4 , 'r') as fwhab4:
    fwhab5 = open (INTER5 , 'w')     
    for line4 in fwhab4:
        if re.search("@@" , line4):
            w6 = line4.replace("@@" , "NEW1")
            print line4.replace("@@" , "NEW1").strip()
            fwhab5.write(w6)
        elif re.search("%@" , line4):
            w7 = line4.replace("%@" , "NEW2")
            print line4.replace("%@" , "NEW2").strip()
            fwhab5.write(w7)

        else:
            print line4.strip()
            fwhab5.write(line4)

fwhab4.close()
fwhab5.close()

# resultat :
# Line 1
# NEW1 data
# NEW2
# Line 4
# End
#%_3048

haut

Rechercher 1 mot avec 1 mot avant et apres


#!/usr/bin/python

#@_3049y_capture_pattern_+_1_avant_et_apres_rawinput!!rawinput_withopen_search_group

import os
import re
import string
import sys
import glob
import time

############## parametres

START="0-2-0a-data-forsearch.txt"      # a fournir

END1="0-3-0a-liste-BEFORE-2autour.txt"

END2="0-3-0b-liste-before-2autour-trie.txt"

REPLACEDLOOPS=10    # nbr maxi de changements de mots ancien/nouveau
TIME=2

SORTEDCOLUMN="0"

############## fin des parametres

# numero de colonne du tri en "integer"
SORTEDCOLUMN2=int(SORTEDCOLUMN)

###############
# deleter les anciens fichiers
for currentFile in glob.glob('*'):
    e1 = "0-3-0a-liste-BEFORE-2aut";
    if currentFile.startswith(e1):
        os.remove(currentFile)

print "---> ok anciens fichiers deletes"
print ""
time.sleep(TIME)

##############

with open (START , 'r') as fr:
    fd = open (END1 , 'a')     

    print "entrer un mot"
    pattern1 = [raw_input("taper 1 mot : ")]   # crochets necessaires (liste) pour marquer les apostrophes

    print pattern1
    pattern2 = str(pattern1)
    print pattern2

    pattern3 = pattern2.replace('[\"' , '').replace('\"]' , '').replace('[\'' , '').replace('\']' , '')
    print "mot tape : " , pattern3
    print ""

# \d  :  a digit   equivalent to [0-9]
# \D  :  a non-digit
# \s  :  whitespace (tab, space, newline, etc.)
# \S  :  non-whitespace
# \w  :  alphanumeric
# \W  :  non-alphanumeric

    for line in fr:
        m = re.search(("\w*\S*\s*" + pattern3 + "\S*\s\w*"), line)      # 2_ la forme adverbiale (ing  - ed ...) uniquement

        if m:
            mb = m.group()
#            print mb
            fd.write(mb + "\n")

fr.close()
fd.close()

############
# trier la liste

fd2= open (END2 , 'w')     
d_list = [line.strip() for line in open (END1)]

d_list.sort(key = lambda line: line.split(' ')[SORTEDCOLUMN2], reverse=False)

for line in d_list:
    print line
    fd2.write(line + "\n")

fd2.close()

###############

print ""
print "@@@> recherche faite dans le fichier : " , START
print "---> resultat dans le fichier : " , END2

######################
# resultat (pour le mot recherche : climb)
# in climbing
# missing climbers has
# mountain climbing
# prisoner climbed over
# rock climbing
# to climb the
# while climbing the
#%_3049

haut

Capture pattern avec 2 fichiers


#!/usr/bin/python

#@_3050y_capture_pattern_avec_2_fichiers!!read_split_readlines_match

import re

START="start.txt"
# she
# plans
# to
# attempt
# @@
# the
# record
# again
# in
# June

PATTERN="start-pattern.txt"
# att
# attempt
# rec
# record

words = open (PATTERN).read().split()

fs = open (START, 'r')
t = fs.readlines()

for i in words:          # mots recherches
    for s in t:
        m = re.match((i + "\s") , s)
        if m:
            print i

fs.close()

# resultat :
# attempt
# record
#%_3050

haut

Capturer un pattern avec finditer


#!/usr/bin/python

#@_3051y_capture_pattern_avec_finditer!!withopen_finditer_group

import re

START="in.txt"
OUT="out.txt"

# @ arise
#  a doubt arose in his mind   un doute est apparu dans son esprit!!
#  if the need arises   en cas de besoin

with open (START , 'r') as fr:
    fd = open (OUT , 'w')     
    for line in fr:

        regex = "\w+!!\W"
        for i in re.finditer(regex, line):
            print i.group(0).strip()
            print line
            fd.write(line)
fr.close()
fd.close()

# resultat :
# esprit!!
#  a doubt arose in his mind   un doute est apparu dans son esprit!!
#%_3051

haut

Capturer un pattern avec startswith


#!/usr/bin/python

#@_3052y_capture_pattern_avec_starswith!!readlines_startswith

# RESULT12 :
# newy-302-back- | transitive verb
# @@) 1. ( move backwards - bicycle , car
# ) reculer
# @@) ( - horse
# ) faire reculer

fd12 = open (RESULT12, 'r').readlines()
fd13 = open (RESULT13 , "w")     

for line12 in fd12:
    if line12.startswith(")"):   # or line12.startswith(".."):
        print line12.strip()
        fd13.write(line12)

fd13.close()

# resultat :
# ) reculer
# ) faire reculer
#%_3052

haut

Capturer patterns multi regex avec STARTSWITH - exemple 1


#!/usr/bin/python

#@_3213y_capture_patterns_multi_regex!!forinif_startswith_join

REGEX1=("!" , "-")
REGEX2=("@" , "%")

fz1 = open("zout.txt" , 'w')            
  
w1 = [
# line.replace(".append" , "\nappend").replace(".finditer" , "\nfinditer") \
line
for line in open("zin.txt")           # main line   # <--- INDISPENSABLE

if line.startswith(REGEX1) or line.startswith(REGEX2)
]
print ''.join(w1)
w1b = ''.join(w1)     # adapter le '\n' avec le resultat (depend du split)
fz1.write(w1b)
fz1.close()

# resultat : zout.txt :
# ----- data1
# @ data2
# !! data3
# % text

#%_3213

haut

Capturer patterns multi regex avec STARTSWITH - exemple 2


#!/usr/bin/python

#@_3053y_capture_patterns_multi_regex!!readlines_startswith

# fichier : zin.txt :
# line1
# ----- data1
# python
# @ data2
# script
# !! data3
# end of test
# % text


# la variable REGEX s'emboite dans startswith()
REGEX=("!" , "--" , "@" , "%")

f = open ("zin.txt" , 'r').readlines()
fw = open ("zout.txt" , 'w')     

for line in f:
    if line.startswith(REGEX):
        print line.strip()
        fw.write(line)
fw.close()

# resultat : zout.txt :
# ----- data1
# @ data2
# !! data3
# % text

#%_3053

haut

Capturer un pattern avec endswith


#!/usr/bin/python

#@_3054y_capture_pattern_avec_endswith!!withopen_split_endswith

START="in.txt"

# START
# she plans to attempt @@ the record again in June
# his aim is @@ to get rich quickly

with open(START, 'r') as testList:
    for line in testList:
        for word in line.split():
            if word.endswith('t'):
#           if word[-1:] == "t":   # idem
                print word

testList.close()

# resultat :

# attempt
# get
#%_3054

haut

Capturer pattern equivalent de startswith


#!/usr/bin/python

#@_3055y_capture_pattern_equivalent_de_startswith!!withopen_continue_readlines_continue

# zin.txt :
# data1 line1
# @ data2 line2
# data3 line3
# @ data 4 line4

#+_3055_capture_pattern_exemple1!!withopen_continue

with open("zin.txt" , "r") as fd1:
    fd2 = open ("zout.txt" , "w")    
    for line1 in fd1:
        if line1[0] == "@":
            continue
        print line1.strip()    # type(line1)   
        fd2.write(line1)
#-
fd1.close()
fd2.close()

######
#+_3055_capture_pattern_exemple2!!readlines_continue

fd1 = open ("zin.txt" , 'r').readlines()
fd2 = open ("zout.txt" , "w")     

for line1 in fd1:
    if line1[0] == "@":
        continue
    print line1.strip()    # type(line1)   
    fd2.write(line1)

fd2.close()
#-
# resultat :
# data1 line1
# data3 line3
#%_3055

haut

Lire 2 lignes apres chaque apparition d'1 marqueur


#!/usr/bin/python

#@_3056y_lire_2_lignes_apres_tous_marqueurs!!readlines_range_len_ifin

# BUT : lire 2 lignes apres chaque apparition du marqueur : @

PATTERN="@"

IN="1-in.txt"
OUT1="1-out.txt"

# IN :
# @ verbe1
# Line1a
# Line2a
# Line3a
# Line4a
# Line5a
# @ verbe2
# Line1b
# Line2b
# Line3b
# Line4b


fw = open(OUT1 , 'w')
f1 = open(IN).readlines()
for i in range(len(f1)):
    if PATTERN in f1[i]:
        print f1[i].strip()
        print f1[i+1].strip()
        print f1[i+2].strip()

        fw.write(f1[i])
        fw.write(f1[i+1])
        fw.write(f1[i+2])

fw.close()

# resultat :
# @ verbe1
# Line1a
# Line2a
# @ verbe2
# Line1b
# Line2b

#%_3056

haut

Lire premiere et derniere ligne


#!/usr/bin/python

#@_3057y_lire_premiere_et_derniere_ligne!!openr_readlines_withopen

# in.txt :
# line1
# line2
# line3
# line4

# exemple 1 :
f1 = open("in.txt",'r')
fw1 = open ("out1.txt" , "w")
lines = f1.readlines()
if lines:
    first_line = lines[:1]
    last_line = lines[-1]

    print first_line
    print last_line
    new1 = ''.join(first_line)
    new2 = ''.join(last_line)
    fw1.write(new1)
    fw1.write(new2)
fw1.close()

# exemple 2 :
with open("in.txt") as f2:
    fw2 = open ("out2.txt" , "w")
    lines = f2.readlines()
    first_row = lines[0].strip()
    last_row = lines[-1]

    print first_row
    print last_row
    fw2.write(first_row + "\n")
    fw2.write(last_row)
fw2.close()

# resultat :
# line1
# line4

#%_3057

haut

Lire la ligne numero 1


#!/usr/bin/python

#@_3058y_lire_la_ligne_numero_1!!openr_range_next_readlines

# in.txt :
# line 1 data1
# line 2 data2
# line 3 data3

# exemple 1 :

#+_3058_lire_la_ligne_numero_1!!openr_range_next
N=1
f = open ("in.txt" , 'r')
fw = open ("out.txt" , "w")     
for i in range(N):
    line = f.next().strip()
    print line
    fw.write(line)
fw.close()
#-

# exemple 2 :

#+_3058_lire_la_ligne_numero_1!!readlines
line = open ("in.txt" , "r").readlines()[0]
print line
#-

# resultat :
# line 1 data1
#%_3058

haut

Lire la ligne 3 en partant de la fin


#!/usr/bin/python

#@_3059y_lire_la_ligne_3_en_partant_de_la_fin!!openr_read_splitlines

# in.txt :
# line 1 data1
# line 2 data2
# line 3 data3
# line 4 data4

infile = open ("in.txt" , 'r')
fw = open ("out.txt" , "w")     
my_list = infile.read().splitlines()

print my_list[-3]
fw.write(my_list[-3])
fw.close()

# resultat :
# line 2 data2
#%_3059

haut

Lire les N premieres lignes d'un fichier (exemple 1 court)


#!/usr/bin/python

#@_3060y_lire_N_premieres_lignes_exemple1!!range_next

# in.txt :
# line1 / user
# line2 / 25
# line3 / data
# line4 / 100
# line5 / root

N=3
f1 = open("in.txt" , 'r')
f2 = open ("out.txt" , 'w')
for i in range(N):
    line = f1.next().strip()
    print line
    f2.write(line + "\n")
f1.close()
f2.close()

# resultat :
# line1 !! user
# line2 !! 25
# line3 !! data

#%_3060

haut

Lire les N premieres lignes d'un fichier (exemple 2 long)


#!/usr/bin/python

#@_3061y_lire_N_premieres_lignes_exemple2!!withopen_next_range

# in.txt :
# line1 / user
# line2 / 25
# line3 / data
# line4 / 100
# line5 / root

N=3
with open ("in.txt" , 'r') as f1:
    f2 = open ("out.txt" , 'w')
    head = [next(f1) for x in xrange(N)]
    for i in head:
        i = i.replace("/" , "!!")
        print i.strip()
        f2.write(i)

f1.close()
f2.close()

# resultat :
# line1 !! user
# line2 !! 25
# line3 !! data

#%_3061

haut

Selectionner des lignes contenant 3 espaces avec search


#!/usr/bin/python

#@_3062y_capture_lignes_contenant_3_espaces!!withopen_search

import re

START="in.txt"
OUT="out.txt"

# START
# @ arise
#  a doubt arose in his mind   un doute est apparu dans son esprit
#  if the need arises   en cas de besoin

with open (START , 'r') as fr:
    fd = open (OUT , 'w')      
    for line in fr:
        m = re.search('\w+(   )\w+', line)
        if m:
            print line.strip()
            fd.write(line)

fr.close()
fd.close()

# resultat
#  a doubt arose in his mind   un doute est apparu dans son esprit
#  if the need arises   en cas de besoin
#%_3062

haut

Selectionner des lignes contenant 1 pattern et ecrire le contenu de ces lignes-fichiers (finditer)


#!/usr/bin/python

#@_3063y_capture_inplusieursfichiers_rawinput!!rawinput_withopen_finditer_startswith_replace_format

import re
import os
import time

START="1-pythonperso1a-9-1.txt"     # changer ici

OUT1="2-5b-files-y-to-open1.txt"
OUT2="2-5b-files-y-to-open2.txt"

# HOME
PATHY="/Python27/new-python-site"

# CGG
#PATHY="/Python27/0-0-FROM-SITE"

TIME=3

m = raw_input("taper un mot recherche : ")

#################################

# creation d'1 liste de fichiers  OUT1 contenant le mot 'm' recherche

with open (START , 'r') as fr:
    fd = open (OUT1 , 'w')     
    for line in fr:

        regex = m

        for i in re.finditer(regex, line):
            if line.startswith("@_"):

                line = line.replace("@_500y-").replace("\n" , "").replace("\r" , "")
                line2 = "{0}.txt".format(line)
                fd.write(line2 + "\n")

fr.close()
fd.close()

print "  ---> ok liste de fichiers contenant le mot recherche ds : " , OUT1
time.sleep(TIME)

###########################

# ouvrir la liste de fichiers et executer l'ouverture de chaque fichier
# resultat ds 1 seul fichier

f4 = open(OUT1 , 'r')
nblines = len(f4.readlines())

print "nb lignes du mot recherche : " , m  , " : "  , nblines
time.sleep(TIME)

f4 = open(OUT1 , 'r')
fw4 = open(OUT2 , 'w')
for line4 in f4:
    line4 = line4.strip()
    print ""
    print "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
    print "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
    print ""

    fw4.write("" + "\n")
    fw4.write("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" + "\n")
    fw4.write("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" + "\n")
    fw4.write("" + "\n")

    os.chdir(PATHY)
    f5 = open(line4 , 'r')
    for line5 in f5:
        line5 = line5.rstrip()
        print line5
        fw4.write(line5 + "\n")
fw4.close()

print "  ---> ok resultat ds : " , OUT2

# resultat de OUT1 :
# y-1y_inserer_trait_separation_ds_1_fichier_si_colonne_1_change!!readlines_range_len
# y-2y_ajouter_cloner_titre_et_le_repeter_sur_lignes_suivantes!!readlines_range_len

# resultat de OUT2 :
# contenu des fichiers listes dans OUT1   (concatenation dans 1 seul fichier)
#%_3063

haut

Selectionner des portions de lignes delimitees par un separateur (re.search)


#!/usr/bin/python

#@_3064y_capture_portions_de_lignes_avec_separateur_exemple1!!withopen_search_group

import re

START="in.txt"
OUT="out.txt"

# START
# he doesn't see his drinking as a problem   il ne se considere pas comme un alcoolique
# All things considered ,  he's quite nice   Tout compte fait ,  il est aimable.
# ( believe )     croire ,    considerer
# do you count her as a friend ?   la consideres-tu comme une amie ?
# 3.       ( bear in mind  points ,  facts )   prendre en consideration
# I consider it money well spent   je considere que c'est un bon investissement

regex = [".*consider.*"]

with open (START, 'r') as road:
    fd = open (OUT, 'w')     
    for ligne in road:
        m = re.search('.*(?<=   )', ligne)
        if m:
            code = m.group(0)
            for pattern in regex:
                n = re.search(pattern, code)
                if n:
                    code2 = n.group(0)
                    print code2
                    fd.write(code2 + "\n")
road.close()
fd.close()

# resultat
# All things considered ,  he's quite nice
# I consider it money well spent
#%_3064

haut

Selectionner des portions de lignes delimitees par un separateur (split)


#!/usr/bin/python

#@_3065y_capture_portions_de_lignes_avec_separateur_exemple2!!withopen_split

import os
import re
import string
import sys
import time

START="in.txt"
OUTUK="out.txt"

# START
# his excuses are wearing a bit thin   ses excuses ne prennent plus
# his jokes are wearing a bit thin   ses plaisanteries ne sont plus droles
# as the year wore to its close   comme l'annee tirait a sa fin

with open (START, 'r') as road1:
    fd1 = open (OUTUK, 'w')     
    for ligne1 in road1:
        m = ligne1.split('   ')[0]
        print m.strip()
        fd1.write(m + "\n")

fd1.close()
road1.close()

# resultat
# his excuses are wearing a bit thin
# his jokes are wearing a bit thin
# as the year wore to its close
#%_3065

haut

Remplacer la derniere occurrence d'un pattern dans un fichier


#!/usr/bin/python

#@_3066y_modifier_remplacer_derniere_occurrence_d_1_pattern_dans_1_fichier!!openr_readlines_tableau_startswith_replace

INTER9="1-pas9.txt"
INTER10="1-pas10.txt"

# but du script : remplacer la derniere occurrence de @ du fichier par : stop

# fin du fichier INTER9
# 002731
# @
#
#
#

##########
fwhab9 = open (INTER9 , 'r')
fwhab10 = open (INTER10 , 'w')     
t9 = fwhab9.readlines()
# print t9
print ""
print "t9 moins 1 : " , t9[-1].strip()
print "t9 moins 2 : " , t9[-2].strip()
print "t9 moins 3 : " , t9[-3].strip()
print "t9 moins 4 : " , t9[-4].strip()
print "t9 moins 5 : " , t9[-5].strip()

if t9[-4].startswith("@"):
    t9[-4] = t9[-4].replace('@' , 'stop')
    fwhab10.writelines(t9)

print "----------------------"
print "verif du remplacement  de @ par stop : "
print ""
print "t9 moins 1 : " , t9[-1].strip()
print "t9 moins 2 : " , t9[-2].strip()
print "t9 moins 3 : " , t9[-3].strip()
print "t9 moins 4 : " , t9[-4].strip()
print "t9 moins 5 : " , t9[-5].strip()

fwhab9.close()
fwhab10.close()

# resultat :

# t9 moins 1 :
# t9 moins 2 :
# t9 moins 3 :
# t9 moins 4 :  @
# t9 moins 5 :  002731
# ----------------------
# verif du remplacement  de @ par stop :

# t9 moins 1 :
# t9 moins 2 :
# t9 moins 3 :
# t9 moins 4 :  stop
# t9 moins 5 :  002731
#%_3066

haut

Verifier dans plusieurs fichiers si la derniere ligne contient 1 pattern


#!/usr/bin/python

#@_3067y_capture_verifier_ds_inplusieursfichiers_si_pattern_dans_derniere_ligne!!openr_read_splitlines_ifin

import os
import glob
import time

LIST="liste-files.txt"
OUT="out-liste.txt"
PATTERN="end"

TIME=2

# file1.txt :
# line1 datafile1
# line2 datafile1
# end

# file2.txt
# line1 datafile2
# line2 datafile2

# deleter anciens fichiers
for currentFile in glob.glob('*'):
    e1 = "out-liste";
    if currentFile.startswith(e1):
        os.remove(currentFile)

print "ok fichiers anciens deletes"
time.sleep(TIME)

##########

fv = open (LIST , 'r')
for roadv in fv:
    roadv = roadv.strip()

    infile = open (roadv , 'r')
    fwv = open (OUT , "a")      
    my_list = infile.read().splitlines()

    print my_list[-1]
    fwv.write(my_list[-1] + "\n")
    if not PATTERN in my_list[-1]:
        print "----------------"
        fwv.write("----------------\n")
        print "---> attention il manque une ligne end dans le fichier : " , roadv
	fwv.write("---> attention il manque une ligne end dans le fichier : " + roadv)

# resultat :
# ok fichiers anciens deletes
# end
# line2 datafile2
# ----------------
# ---> attention il manque une ligne end dans le fichier :  file2.txt
#%_3067

haut

Marquer une ligne (avec 2 fichiers et 'intersection')


#!/usr/bin/python

#@_3068y_marquer_lignes_si_contenues_ds_1_fichier!!read_splitlines_set_intersection_join

import os
import re

# BUT : comparer 2 listes
# si des elements d'1 petite liste (DELETE) sont contenus dans 1 grande liste (IN)
# et les marquer par 'NO'

DELETE="delete.txt"

IN="in.txt"

OUT="out.txt"

# IN :
# abandon
# abandoned
# abdicate
# abet
# abhor
# abide

# DELETE  (ses elements vont marquer 'NO' ds IN)
# abdicate
# abhor


fw = open(OUT , "w")

big = open(IN).read().splitlines()
small = open(DELETE).read().splitlines()

com = set(big).intersection(set(small))

all = set(big)

other = list(all - com)

for i in other:
    print i , "@@"
    m1 = i , "@@"
    m1b = ' '.join(m1)
    fw.write(m1b + "\n")

for j in com:
    print j , "NO"
    m2 = j , "NO"
    m2b = ' '.join(m2)
    fw.write(m2b + "\n")

fw.close()

# resultat :
# abandon @@
# abet @@
# abandoned @@
# abide @@
# abdicate NO
# abhor NO

#%_3068

haut

Marquer un titre devant toutes les lignes (readlines - startswith)=1013


#!/usr/bin/python

#@_3069y_marquer_titre_readlines_startswith=1013!!readlines_startswith

# START :
# newy-109-accomplish- | transitive verb
# 1) accomplir , executer
# 2) realiser
# 3) effectuer
# 4) venir a bout de , mener a bonne fin
# newy-57-accord- | transitive verb
# 1) accorder
# 2) reserver

fd14 = open (START, 'r').readlines()
fd15 = open (RESULT15 , "w")    

for line14 in fd14:
    if line14.startswith("newy"):
        inter = line14
        inter = inter.strip()
        print "-----------------"
#        fd15.write("-----------------\n")

    if not line14.startswith("newy"):
        print inter , "|" , line14.strip()
        fd15.write(inter + " | " + line14)

fd15.close()

# RESULT15 :
# newy-109-accomplish- | transitive verb | 1) accomplir , executer
# newy-109-accomplish- | transitive verb | 2) realiser
# newy-109-accomplish- | transitive verb | 3) effectuer
# newy-109-accomplish- | transitive verb | 4) venir a bout de , mener a bonne fin
# newy-57-accord- | transitive verb | 1) accorder
# newy-57-accord- | transitive verb | 2) reserver

#%_3069

haut

Marquer un titre devant toutes les lignes (readlines - if in)=1138


#!/usr/bin/python

#@_3070y_marquer_titre_readlines_if_in=1138!!forinopen_readlines_ifin

import os
import re

LISTTOTALSTUVWXYPHRASES="1-0-liste-stuvwxyphrases.txt"
LISTTOTALRSTUVWXYPHRASES="1-0-liste-rstuvwxyphrases.txt"

# exemple de id17 :
# pos @@ verb %%
# subc @@ (transitive)
# def @@ to forsake completely; desert; leave behind
# quote @@ to abandon a baby

for id17 in open(LISTTOTALSTUVWXYPHRASES):
    id17=id17.strip()
    id17b=id17.split("-")[1].split(".")[0]
#    print id17b
    os.chdir(PATHRSTUVWXYPHRASES)
    f18 = open("rstuvwxy-" + id17b + ".txt" , "w")

    os.chdir(PATHSTUVWXYPHRASES)
    f17 = open(id17 , "r").readlines()

    for line14 in f17:
        line14 = line14.strip()

	if "pos" in line14:
	    inter1 = line14.split("@@")[1].split("%%")[0]
	    inter2 = line14.split("@@")[1]

#	    print inter1 , id17b , " @@ " , inter2
	    f18.write(inter1 + id17b + " @@ " + inter2 + "\n")
	if not "pos" in line14:
	    inter2 = line14.split("@@")[1]

#	    print inter1 , id17b , " @@ " , inter2
	    f18.write(inter1 + id17b + " @@ " + inter2 + "\n")

f18.close()

# resultat :
# verb abandon @@ verb %%
# verb abandon @@ (transitive)
# verb abandon @@ to forsake completely; desert; leave behind
# verb abandon @@ to abandon a baby

#%_3070

haut

Marquer un titre devant toutes les lignes (readlines - endswith)=1168


#!/usr/bin/python

#@_3071y_marquer_titre_split_endswith=1168!!split_endswith

# BUT : coller devant toutes les lignes un pattern dont sa fin est "ing"

IN="in.txt"

# IN :
# Working in front of the blast furnace ,  I was exposed to scorching heat every day. - chaleur accablante - fournaise
# The worker objected to having to work late since he wouldn't get paid for the extra hours.
# I couldn't type ,  so I resorted to writing with a pen.

f = open (IN ,'r')
fw = open("out.txt" , 'w')

for lines in f:
    word=lines.split()              # splitlines()   # pour compter lignes
    for g in word:

        if g.endswith("ing"):
            print g , " %%% " , lines.strip()
            road = g + " %%% " + lines
	    fw.write(road)
fw.close()

# resultat :
# Working  %%%  Working in front of the blast furnace ,  I was exposed to scorching heat every day. - chaleur accablante - fournaise
# scorching  %%%  Working in front of the blast furnace ,  I was exposed to scorching heat every day. - chaleur accablante - fournaise
# having  %%%  The worker objected to having to work late since he wouldn't get paid for the extra hours.
# writing  %%%  I couldn't type ,  so I resorted to writing with a pen.

#%_3071

haut

Marquer un titre devant toutes les lignes (readlines - range len)


#!/usr/bin/python

#@_3072y_marquer_titre_devant_lignes_range_len!!readlines_range_len_split_break

FILE1="1-array-1e.txt"
FILE2="1-array-1f.txt"
FILE3="1-array-1g.txt"

# FILE1 : attention ne pas mettre de lignes avant le 1er titre (grec)
# grec vexecgct tape 6014
# 200 5 1000 col4 col5 col6
# 201 5 900 col4 col5 col6
# 202 5 850 col4 col5 col6
# 203 5 830 col4 col5 col6
# 204 5 810 col4 col5 col6
# data3 col2 col3 col4 col5
# data4 col2 col3 col4 col5
# grec vexecgct tape 6015
# info1a col2 col3 col4 col5
# info2a col2 col3 col4 col5
# grec vexecgct tape 6016
# data7 124 5476 819 337
# data8 173 2416 379 344
# data9 22 713 4389 773

# ajouter 2 lignes a la fin du fichier : end\nend\n

open (FILE2 , "w").write( open (FILE1).read() + "end\nend\n")

# script : utilisation d'1 tableau

fd30 = open (FILE2 , 'r').readlines()
fd31 = open (FILE3 , "w")       

for i in range(len(fd30)):

    if "grec" in fd30[i].split("tape ")[0]:
        w = fd30[i].strip().split("tape ")[1]
        print w , "grec"
        fd31.write(w + " grec" + "\n")

    if not "grec" in fd30[i+1]:
        fd30[i+1] = fd30[i+1].strip()
	print w , " : " , fd30[i+1]
        fd31.write(w + " : " + fd30[i+1] + "\n")

    if "end" in fd30[i]:
        break

fd31.close()

# resultat :
# 6014 grec
# 6014  :  200 5 1000 col4 col5 col6
# 6014  :  201 5 900 col4 col5 col6
# 6014  :  202 5 850 col4 col5 col6
# 6014  :  203 5 830 col4 col5 col6
# 6014  :  204 5 810 col4 col5 col6
# 6014  :  data3 col2 col3 col4 col5
# 6014  :  data4 col2 col3 col4 col5
# 6015 grec
# 6015  :  info1a col2 col3 col4 col5
# 6015  :  info2a col2 col3 col4 col5
# 6016 grec
# 6016  :  data7 124 5476 819 337
# 6016  :  data8 173 2416 379 344
# 6016  :  data9 22 713 4389 773
# 6016  :  end
# 6016  :  end

#%_3072

haut

Marquer un titre devant toutes les lignes (readlines - range len)


#!/usr/bin/python

#@_3073y_marquer_titre_range_len!!readlines_range_len_split

# ajouter 2 lignes a la fin du fichier:

open ("in2.txt" , "w").write ( open ("in.txt").read() + "end\nend\n")

# in2.txt :
# Receiver 1 : titre1
# data1
# data2
# Receiver 2 : titre2
# data3
# data4
# end
# end

fd30 = open ("in2.txt" , 'r').readlines()
fd31 = open ("out.txt" , "w")    

for i in range(len(fd30)):

    if "Receiver" in fd30[i].split(":")[0]:
        w = fd30[i].strip()
        print w
        fd31.write(w + "\n")

    if not "Receiver" in fd30[i+1]:
        fd30[i+1] = fd30[i+1].strip()
	print w , fd30[i+1]
        fd31.write(w + " " + fd30[i+1] + "\n")
    if "end" in fd30[i]:
        break

# resultat :
# Receiver 1 : titre1
# Receiver 1 : titre1 data1
# Receiver 1 : titre1 data2
# Receiver 2 : titre2
# Receiver 2 : titre2 data3
# Receiver 2 : titre2 data4
# Receiver 2 : titre2 end
# Receiver 2 : titre2 end
#%_3073

haut

Marquer un titre devant toutes les lignes - while 1:


#!/usr/bin/python

#@_3074y_marquer_titre_dvant_toutes_lignes!!
IN1="in.txt"
IN2="in-2.txt"
OUT="out.txt"

PATTERN="@"

# START = in.txt :
# @ titre1
# -rw-------   1 name users    51157
# -rw-r--r--   1 name users      189
# @ titre2
# -rw-rw-rw-  1 name users 1607
# -rw-rw-rw-  1 name users  357
# @ titre3
# -rw------- 1 name users 34937
# -rw------- 1 name users 38241


# ajouter 1 ligne vide en ligne 1

open (IN2 , "w").write ( " \n" + open (IN1).read())  

#######################

f1 = open (IN2 , 'r')
f2 = open (OUT , "w")
line = f1.readline()         # indispensable

while 1:
    line = f1.readline()    # indispensable
    line = line.rstrip()        # indispensable

    if not line:         # arret a la fin du fichier
        break
    
    if line.startswith(PATTERN):
        w = line            # variable memorisee
        flag=0                # indispensable

        flag=1                # indispensable        
#        z = line                               # sans separation  - schema de la ligne a ecrire
        m = "--------------------\n" , line      # avec separation - schema de la ligne a ecrire
        z = ''.join(m)                           # avec separation

    if not line.startswith(PATTERN):
        y = w , line              # schema de la ligne a ecrire  (en tuple)
        z = ' '.join(y)         # ok flag est deja = 1
        
    if flag:
        print z                # ligne finale ecrite
        f2.write(z + "\n")
f2.close()

# resultat :
# --------------------
# @ titre1
# @ titre1 -rw-------   1 name users    51157
# @ titre1 -rw-r--r--   1 name users      189
# --------------------
# @ titre2
# @ titre2 -rw-rw-rw-  1 name users 1607
# @ titre2 -rw-rw-rw-  1 name users  357
# --------------------
# @ titre3
# @ titre3 -rw------- 1 name users 34937
# @ titre3 -rw------- 1 name users 38241

#%_3074

haut

Supprimer des fins de fichiers a partir d'1 pattern


#!/usr/bin/python

#@_3075y_deleter_fin_fichier_inoutplusieursfichiers!!forinopen_split_ifin_break

import os

LISTEXY="1-liste-xy.txt"

PATHXY="/Python27/tests-2017-5/XY"
PATHWXY="/Python27/tests-2017-5/WXY"

PATTERNSTOP="@@@"

# x-file1.txt
# Data1a
# Data2a
# @@@
# Data3a
# Data4a

# x-file2.txt
# Data1b
# Data2b
# @@@
# Data3b
# Data4b


# LISTEXY
# x-file1.txt
# x-file2.txt

################

for id15 in open(LISTEXY):
    id15=id15.strip()
    id15b=id15.split("-")[1].split(".")[0]
#    print id15b    # file1

    os.chdir(PATHWXY)
    f16 = open("w-" + id15b + ".txt" , "w")

    os.chdir(PATHXY)
    f17 = open(id15 , "r")

    for line17 in f17:
        line17 = line17.strip()
        if PATTERNSTOP in line17:
            break
        else:
#            print line17
            f16.write(line17 + "\n")
f16.close()

print " ---> ok creation des fichiers : w-"


# resultat :
# w-file1.txt
# Data1a
# Data2a

# w-file2.txt
# Data1b
# Data2b

#%_3075

haut

Supprimer un blanc au debut ou fin de ligne - supprimer un retour chariot


#!/usr/bin/python

#@_3076y_deleter_blanc_au_debut_ou_fin_de_ligne_deleter_retour_chariot!!readlines_sorted_set_sub

# retirer le blanc devant toutes les lignes
# 1/3_ methode courte avec sed BASH : (OUT2 et OUT3 sont des variables a definir)

os.system("sed 's/^ \{1\}//g' " + OUT2 + " > " + OUT3)

# 2/3_ autre methode

f1 = open(OUT1 , 'r')
f2 = open(OUT2 , 'w')
for line1 in f1.readlines():
    line1 = line1[:-2]        # oubien [:-1] si necessaire pour retirer le '\r'                 
    print line1
    f2.write(line1 + "\n")
f2.close()

# 3/3_ methode longue :

basket = open (CONCAT3).readlines()
f6 = open (CONCAT4 , 'w')      
for f in sorted(set(basket)):
#    if not f.startswith("---"):

    f = re.sub(r"(^\s)" , "" , f )   # blanc au debut de ligne
#    f = re.sub(r"(\s$)" ,"" , f)    # blanc en fin de ligne
    f6.write(f)
f6.close()

###############

# retirer le \r (retour chariot d'un fichier)

os.system("sed 's/\r//g' " + OUT1 + " > " + OUT2)

#%_3076

haut

Supprimer le dernier mot de chaque ligne


#!/usr/bin/python

#@_3077y_deleter_dernier_mot_de_chaque_ligne!!read_splitlines_rsplit

# in.txt : pas d'espace apres le dernier mot
# 1) accomplir , executer
# 2) realiser
# 3) venir a bout de , mener a bonne fin

mylist = open ("in.txt").read().splitlines()
fw3 = open ("out.txt" , "w")     
for detail in mylist:
    detail = detail.rsplit(" " , 1)[0]
    fw3.write(detail + "\n")
fw3.close()

# resultat :
# 1) accomplir ,
# 2)
# 3) venir a bout de , mener a bonne

#%_3077

haut

Supprimer les lignes doubles (exemple 1) (set et add)


#!/usr/bin/python

#@_3078y_deleter_lignes_doubles_set_add!!set_add

# supprime les lignes doubles (ou triples)
# en conservant 1 seul exemplaire des doubles (ou triples)

# in.txt :
# line1
# data1
# data1
# data1
# line4
# data2
# data2
# line6


lines_seen = set()

fw = open("out-sans-doubles.txt", "w")

for line in open("in.txt", "r"):
    if line not in lines_seen:

        lines_seen.add(line)
        print line.strip()
        fw.write(line)
fw.close()

# resultat : (out-sans-doubles.txt)
# line1
# data1
# line4
# data2
# line6

#%_3078

haut

Supprimer les lignes doubles (exemple 2) (append et join)


#!/usr/bin/python

#@_3079y_deleter_lignes_doubles_append_join!!read_splitlines_append_forin_ifin_str_join

# in.txt
# line818@making
# line818@makes
# line818@making
# line818@made
# line818@makes
# line818@making
# line818@made
# line818@makes
# line819@-
# line819@-
# line819@-


mylist2 = open ("in.txt").read().splitlines()
fw = open("out.txt" , 'w')

#mylist3 = sorted(list(set(mylist2)))        # intercaler un tri

unique = []
[unique.append(item) for item in mylist2 if item not in unique]

str1 = '\n'.join(str(e) for e in unique)

print str1
fw.write(str1)
fw.close()

# resultat
# line818@making
# line818@makes
# line818@made
# line819@-

#%_3079

haut

Supprimer les lignes doubles (exemple 3) reperees par un marqueur


#!/usr/bin/python

#@_3080y_deleter_lignes_doubles_avec_marqueur!!readlines_range_len_break

IN="in.txt"
OUT="out.txt"

# IN :
# vy-1150012.txt @ 6114 @ 1150012 @ 49 @ 1000
# vy-1150012.txt @ 6114 @ 1150012 @ 49 @ 1155
# vy-1150012.txt @ 6115 @ 1150012 @ 49 @ 1321
# vy-1150012.txt @ 6116 @ 1150012 @ 49 @ 1441
# vy-1150012.txt @ 6116 @ 1150012 @ 49 @ 1441
# ---- --- --- ---- --- ----- ----------
# vy-1150054.txt @ 6186 @ 1150054 @ 77 @ 1441
# vy-1150054.txt @ 6186 @ 1150054 @ 77 @ 1286
# vy-1150054.txt @ 6187 @ 1150054 @ 77 @ 1120
# vy-1150054.txt @ 6188 @ 1150054 @ 77 @ 1000
# vy-1150054.txt @ 6188 @ 1150054 @ 77 @ 1000
# ---- --- --- ---- --- ----- ----------
# end
# end


fd32 = open (IN , 'r').readlines()
fd33 = open (OUT , "w")      

for j in range(len(fd32)):

    if fd32[j+1] == fd32[j]:
        fd32[j] == ""

    if fd32[j+1] != fd32[j]:
        print fd32[j].strip()
        fd33.write(fd32[j])

    if "end" in fd32[j+1]:
        break

fd33.close()

# resultat :

# vy-1150012.txt @ 6114 @ 1150012 @ 49 @ 1000
# vy-1150012.txt @ 6114 @ 1150012 @ 49 @ 1155
# vy-1150012.txt @ 6115 @ 1150012 @ 49 @ 1321
# vy-1150012.txt @ 6116 @ 1150012 @ 49 @ 1441
# ---- --- --- ---- --- ----- ----------
# vy-1150054.txt @ 6186 @ 1150054 @ 77 @ 1441
# vy-1150054.txt @ 6186 @ 1150054 @ 77 @ 1286
# vy-1150054.txt @ 6187 @ 1150054 @ 77 @ 1120
# vy-1150054.txt @ 6188 @ 1150054 @ 77 @ 1000
# ---- --- --- ---- --- ----- ----------
#%_3080

haut

Supprimer les lignes vides


#!/usr/bin/python

#@_3081y_deleter_lignes_vides!!withopen_join_forinif_isspace

INTER5="inter5.txt"
INTER6="inter6.txt"

# depart :INTER5
# Line 1

# Line 3
# Line 4

# Line 6


with open (INTER5 , 'r') as fwhab5:
    fwhab6 = open (INTER6 , 'w')     
    w8 = "".join(line6 for line6 in fwhab5 if not line6.isspace())
    print "".join(line6 for line6 in fwhab5 if not line6.isspace())
    fwhab6.write(w8 + "\n")

fwhab5.close()
fwhab6.close()

# resultat :
# Line 1
# Line 3
# Line 4
# Line 6
#%_3081

haut

Supprimer des lignes avec startswith


#!/usr/bin/python

#@_3082y_deleter_lignes!!openr_readlines_startswith

# in.txt :
# realiser
# pattern1 accomplir , executer
# pattern2 venir a bout de , mener a bonne fin

f1 = open ("in.txt" , 'r')
lines = f1.readlines()
f1.close()

f1 = open ("out.txt" , 'w')        # on pourrait reecrire dans le meme fichier  : in.txt

for i in lines:
    if not i.startswith("pattern1") and not i.startswith("pattern2"):
        print i
	f1.write(i)
f1.close()

# resultat :
# realiser

#%_3082

haut

Supprimer des lignes d'un fichier si des mots sont dans un fichier


#!/usr/bin/python

#@_3083y_deleter_lignes_d_1_fichier_si_des_patterns_sont_dans_1_fichier!!read_splitlines_withopen_ifanyin_inforin

IN = "in.txt"
OUT = "out.txt"
DELETE = "z-delete.txt"

# BUT : des patterns dans une liste vont deleter des lignes les contenant

# data1 = c2 9c
# data2 = c3 a9
# data3 = c3 ae
# data4 = c3 a7
# data5 = c3 a0

# DELETE :
# data1 =
# data2 =

bad_words = open (DELETE).read().splitlines()

# print bad_words

with open(IN) as oldfile:
    newfile = open (OUT , 'w')     
    for line in oldfile:
        if not any(bad_word in line for bad_word in bad_words):
            print line.strip()
            newfile.write(line)
oldfile.close()
newfile.close()

# resultat :
# data3 = c3 ae
# data4 = c3 a7
# data5 = c3 a0
#%_3083

haut

Supprimer des lignes de plusieurs fichiers si des mots sont dans un fichier


#!/usr/bin/python

#@_3084y_deleter_lignes_inoutplusieursfichiers_selon_1_fichier!!oslistdir_ifany

import os

PATHHOME="/Python27/tests-2017-10"

BADWORDS="1-delete.txt"

# y-001.txt
# data 1
# data 2
# 100
# 101

# y-002.txt
# New data 1
# New data 2
# 200
# 201

# BADWORDS :
# data

bad_words = open(BADWORDS).read().splitlines()

newlist = [i for i in os.listdir(PATHHOME) if i[0:2] == "y-"]
newlist2 = sorted(newlist)

for file1 in newlist2:
    f2 = open("z" + file1 , 'w')   
    a1 = [
    line1       
    for line1 in open(file1)
    if not any(bad_word in line1 for bad_word in bad_words)    
    ]

    print ''.join(a1)
    a1b = ''.join(a1)
    f2.write(a1b)

f2.close()

# resultats :
# zy-001.txt :
# 100
# 101

# zy-002.txt :
# 200
# 201

#%_3084

haut

Supprimer des groupes de mots avec re.sub


#!/usr/bin/python

#@_3085y_deleter_groupes_de_mots!!oslistdir_forinif_sub

import os
import re

PATHHOME="/Python27/tests-2017-10"

# uyz-1.txt
# Missfire SP 2233 , 4365
# SP Timing error 5ms data1
# autofire SP 4512 , 5227
# disabled field shot 2325
# ------------- SP

# uyz-2.txt
# disabled data1 SP 4431
# autofire Tmg error 7ms SP3379
# disabled SP 2325 SP 4512 , 5227
# missfire SP 2233 , 4365


newlist = [i for i in os.listdir(PATHHOME) if i[0:3] == "uyz"]
newlist2 = sorted(newlist)
fz1 = open("out-3085.txt" , 'w')

for file1 in newlist2:
    w1 = [
    line1
    for line1 in open(file1)          
    if "SP" in line1 or "shot" in line1 or "autofire" in line1
    ]
    w1b = ''.join(w1)     

    w1c = re.sub('Timing.*?ms|Tmg.*?ms|dis.*?ed|f.*?d' , '' , w1b)    

    print w1c
    fz1.write(w1c)

fz1.close()


# resultat :
# Missfire SP 2233 , 4365
# SP  data1
# autofire SP 4512 , 5227
#   shot 2325
# ------------- SP
#  data1 SP 4431
# autofire  SP3379
#  SP 2325 SP 4512 , 5227
# missfire SP 2233 , 4365

#%_3085

haut

Soustraire valeurs petit fichier d'un gros fichier_vlookup


#!/usr/bin/python

#@_3187y_soustraire_valeurs_petit_fichier_d_1_grand_fichier_vlookup!!search_splitlines_split_ifin

import os
import re
import time

TIME=1

LISTEORIGTRIE="1-0-liste-verbes-orig-triee-mini.txt"
LISTEDIFNOMBREVERBES="1-0-liste-all-nb-verbes.txt"    # liste fichiers @
LISTEDIFNOMBREVERBESTRIE="1-0-liste-all-nb-verbes-trie.txt"    # liste fichiers @ trie
LISTENEWVERBES="1-0-liste-verbes-new.txt"

PATHHOME="/Python27/tests-08-2017-SITE"

# LISTEORIGTRIE   (=   1-0-liste-verbes@-10.txt)  =  BIG
# abandon
# abdicate
# abduct
# abide
# absorb
# abstain
# abstract
# abuse
# accelerate
# accent

# 1-0-liste-verbes@-07.txt  =  SMALL
# abandon
# abdicate
# abduct
# abstain
# abstract
# accelerate
# accent

############

# nombre de verbes du fichier

with open (LISTEORIGTRIE, 'r') as total1:
    newnblines = len(total1.readlines())
    print " --> nb de verbes du fichier original : " , newnblines

total1.close()
time.sleep(TIME)
print ""

##################

# sauver ce fichier incluant le nombre de verbes dans le nom

froad1 = open(LISTEORIGTRIE , 'r')     
froad2 = open("1-0-liste-verbes@-" + str(newnblines) + ".txt" , 'w')
for lineroad1 in froad1:
    froad2.write(lineroad1)
froad2.close()    

print " --> ok liste la + recente incluant le nombre de verbes dans le nom  : "
time.sleep(TIME)

#######################

# capture des noms des fichiers incluant le nombre de verbes dans le nom

froad3 = os.listdir(PATHHOME)
froad4 = open(LISTEDIFNOMBREVERBES , 'w')

for fileroad3 in froad3:
    newroad3 = re.search("1-0-liste-verbes@-" , fileroad3)
    if newroad3:
#        print fileroad3
        froad4.write(fileroad3 + "\n")
froad4.close()        

print " --> ok liste de tout fichier incluant le nombre de verbes dans le nom  : " , LISTEDIFNOMBREVERBES
time.sleep(TIME)

#############################

# trier

fd = open(LISTEDIFNOMBREVERBES , 'r')
fw = open(LISTEDIFNOMBREVERBESTRIE , 'w')

t = fd.read().splitlines()

d = sorted(t)
#d = sorted(t , reverse=True)    # ordre inverse

#print '\n'.join(d)
fw.write('\n'.join(d))

fw.close()

print " --> ok liste triee  : " , LISTEDIFNOMBREVERBES
time.sleep(TIME)

###############################

# capture des 2 derniers fichiers les + recents (tail -2)

fwhab9 = open(LISTEDIFNOMBREVERBESTRIE , 'r')
t9 = fwhab9.readlines()
print "ancien nombre : SMALL : " , t9[-2].strip()      # SMALL
print "nouveau nombre : BIG : " , t9[-1].strip()      # BIG

SMALL=t9[-2].strip()
BIG=t9[-1].strip()

print " --> ok derniere ligne = le + recent " , BIG
print " --> ok avant derniere ligne = le - recent " , SMALL
time.sleep(TIME)

########################

# liste des nouveaux verbes

print "----------------------------"
print "liste des nouveaux verbes"
print "----------------------------"

my_list = open(SMALL).read().split()     # SMALL

fwhab10 = open(LISTENEWVERBES , 'w')

book = open(BIG).read().split()       # BIG

for element in book:
    if element in my_list:       # type(element)  
        m1 = element , " : ok"
        m1b = ' '.join(m1)
#        print m1b
#        fw.write(m1b + "\n")

    if element not in my_list:
        m2 = element      #, " : no"
#        m2b = ' '.join(m2)
        print m2
        fwhab10.write(m2 + "\n")

fwhab10.close()

print " --> ok liste des nouveaux verbes  : " , LISTENEWVERBES
time.sleep(TIME)

#############################

linecount = len(open(LISTENEWVERBES , 'r').readlines())
print " --> le fichier : " , LISTENEWVERBES , " a %d lignes." % linecount
print ""
# print " --> nombre de fichiers z :  %d " % linecount
time.sleep(TIME)

# resultat :  LISTENEWVERBES
# abide
# absorb
# abuse
# --> le fichier :  1-0-liste-verbes-new.txt  a 3 lignes.

#%_3187

haut

Capture des colonnes 1 et 2


#!/usr/bin/python

#@_3086y_capture_colonnes_1_et_2!!withopen_split_join

# START
# col1 col2 data1 line1
# col1b col2b data2 line2


with open("in.txt" , 'r') as f22:
    f23 = open ("out.txt" , 'w')     
    for line22 in f22:
        m22 = line22.split()[:2]
        print ' '.join(m22)
        m23 = ' '.join(m22)
        f23.write(m23 + "\n")
f22.close()
f23.close()

# resultat
# col1 col2
# col1b col2b
#%_3086

haut

Capture de l'avant derniere et derniere colonne


#!/usr/bin/python

#@_3087y_capture_colonne_avant_derniere_et_derniere!!withopen_split_join

# START
# col1 col2 data1 line1
# col1b col2b data2 line2

with open("in.txt" , 'r') as f22:
    f23 = open ("out.txt" , 'w')     
    for line22 in f22:
        m22 = line22.split()[2:]
        print ' '.join(m22)
        m23 = ' '.join(m22)
        f23.write(m23 + "\n")
f22.close()
f23.close()

# resultat
# data1 line1
# data2 line2
#%_3087

haut

Ajouter un meme texte devant toutes les lignes (en colonne)


#!/usr/bin/python

#@_3088y_ajouter_texte_colonne_devant_toutes_lignes!!map_lambda_readlines_write

import os
import re

# in.txt :
# line1/data1
# line2/span/data2
# line3/hello/data3

# ajouter un texte devant toutes les lignes (en colonne)

f1 = open("in.txt" , 'r')
lines = map(lambda l : '/Python27/user/' + l , f1.readlines())
for i in lines:
    print i.strip()
f1.close()

f1 = open("out.txt" , 'w')
map(lambda l : f1.write(l) , lines)
f1.close()

# resultat :
# /Python27/user/line1/data1
# /Python27/user/line2/span/data2
# /Python27/user/line3/hello/data3

#%_3088

haut

Arrondir un chiffre a la decimale inferieure ou superieure


#!/usr/bin/python

#@_3089y_arrondir_colonne_a_la_decimale!!split_float_round_%g_join

IN="in.txt"
OUT="out.txt"

# BUT : arrondir a la decimale  inferieure ou superieure

# IN :
# 1001 125.3
# 1002 167.8
# 1003 293.5
# 1004 327.2
# 1005 159.6


f1 = open(IN , 'r')
fw1 = open(OUT , 'w')
for line1 in f1:
    col1 = line1.split()[0]
    col2 = line1.split()[1]
    col2 = float(col2)
    col2b = round(col2)
#    print col2b                    # decimale  .0 conservee
    print('%g' %col2b)       # suppression de la decimale  .0

    col2c = ('%g' %col2b)
#    print col1 , col2c
    w = col1 , col2c
    wb = ' '.join(w)
    fw1.write(wb + "\n")
fw1.close()

# resultat de out.txt
# 1001 125
# 1002 168
# 1003 294
# 1004 327
# 1005 160

#%_3089

haut

MIN et MAX des elements d'une liste : shortest - longest


#!/usr/bin/python

#@_3204y_min_max_shortest_longest_elements_d_1_liste!!len_min_max

cars = ['honda' , 'ford' , 'kia' , 'toyota' , 'jaguar' , 'citroen' , 'peugeot']
 

lenList = [len(car) for car in cars]
for car in cars:
    if len(car) == min(lenList):
        print "Shortest: %s" % car

    if len(car) == max(lenList):
        print "Longest: %s" % car

# resultat :
# Shortest: kia
# Longest: citroen
# Longest: peugeot

#%_3204

haut

Capturer une ligne et la modifier (selection d'une ligne)


#!/usr/bin/python

#@_3091y_capture_modifier_ligne_par_tableau!!openr_startswith_replace_tableau[]

import os

# BUT :  remplacer un pattern d'une ligne

IN="1-sub1.txt"
OUT="1-sub2.txt"

# IN
# %data1/login/larousse/file1.txt
# @data2/login/collins/file2.txt

fwhab9 = open (IN , 'r')
fwhab10 = open (OUT , 'w')     
t9 = fwhab9.readlines()
# print t9
print ""
print "t9 moins 1 : " , t9[-1].strip()
print "t9 moins 2 : " , t9[-2].strip()

if t9[-1].startswith("@"):
    t9[-1] = t9[-1].replace('@' , 'stop ')
    fwhab10.writelines(t9)

print "----------------------"
print "verif du remplacement  de @ par stop : "
print ""
print "t9 moins 1 : " , t9[-1].strip()
print "t9 moins 2 : " , t9[-2].strip()

fwhab10.close()

# resultat :
# t9 moins 1 :  @data2/login/collins/file2.txt
# t9 moins 2 :  %data1/login/larousse/file1.txt
# ----------------------
# verif du remplacement  de @ par stop :

# t9 moins 1 :  stop data2/login/collins/file2.txt
# t9 moins 2 :  %data1/login/larousse/file1.txt

#%_3091

haut

Compter le nombre de fichiers avec 'FOR IN IF'


#!/usr/bin/python

#@_3206y_count_nombre_de_fichiers!!forinif_oslistdir_str_append

import os

PATH="/Python27/tests-2017-09"

# BUT : compter nombre de fichiers (sans creation de fichier)

# 1/2_ utiliser la string

newlist2 = [j for j in os.listdir(PATH) if j[0:2] == "1-"]

# newlist2 = [j for j in os.listdir(PATH) if "." in j]     # pour tous les fichiers du repertoire

count = 1
for file2 in newlist2:       # file2  -->  string
    z1 = str(count)        # convert integer to string
    count += 1

# z1         # cale a gauche apres la boucle count (pour avoir le dernier)
print "     utiliser la string ---> nb de fichiers  selectionnes : " , z1
  
#####

# 2/2_ utiliser la liste avec 'append'

newlist2 = [j for j in os.listdir(PATH) if j[0:2] == "1-"]

count = 1
for file2 in newlist2:       # file2  -->  string
    z1 = str(count)        # convert integer to string
    count += 1
    
    combined_list = []
    combined_list.append(z1)
w = ''.join(combined_list)

print "     utiliser la liste ---> nb de fichiers  x-part : " , w

#%_3206

haut

Ce que "FOR IN IF" permet de faire : isspace-startswith-search-if any-if in-replace-split-sorted-chdir ...


#!/usr/bin/python

#@_3202y_forinif_concatener_inoutplusieursfichiers!!listdir_replace_split_search_isspace_startswith_ifany_join

import re
import os

PATH="/Python27/tests-2017-09"

GOODWORDS="1-good_words.txt"      # contenant patterns a capturer

# les fichiers sorties sont ds le script

#      3a-1.txt :
# 1001 5 data
#            # ligne vide
# 1002 12
# 1003 7 @ first capture 4
# 1006 3 @ first town 9
# line6
# newline7


#      3a-2.txt :                                           #    resultat ds 1 seul fichier :
# 1003 6 @ second capture 4                                 # start ---                   
# 1004 15 data                                              # first capture 4             
#           # ligne vide                                    # first town 9                
# 1005 9                                                    # end ---                     
# 1006 2 @ second town 7                                    # start ---                   
# 1012 8                                                    # second capture 4            
# line7                                                     # second town 7               
# newline8                                                  # end ---                     
                                               

# GOODWORDS :
# 1003
# 1006

################################

good_words = open(GOODWORDS).read().splitlines()

## activer soit mono soit multi fichiers - mais pas les 2 a la fois
#OUTONEFILE="2-result-one-file.txt"         # activer si ecriture ds mono fichier --> accumulation)
#fz1 = open(OUTONEFILE , 'w')            # activer si ecriture ds mono fichier --> accumulation)

newlist = [i for i in os.listdir(PATH) if i[0:2] == "3a"]
# newlist = [i for i in os.listdir(PATH) if ("." in i and not "color" in i)] # pour retirer repertoires
# newlist = [i for i in os.listdir(PATH) if ("." in i 
# and not "1-count.sh" in i)]               # possibilite de retourner a la ligne

newlist2 = sorted(newlist)
print newlist2      # ['3a-1.txt', '3a-2.txt']

count=1
for file1 in newlist2:
    fz1 = open("y-" + file1 , 'w')   # activer si ecriture ds multi fichiers (desactiver si mono fichier)
    os.chdir(PATH)                 # pour changer de repertoire  (avant w1)

    print "start ---"               # ecrit "start" au debut des fichiers y-
    fz1.write("start ---" + "\n")    # ecrit "start" au debut des fichiers y-
    
    w1 = [
    line1                    # INDISPENSABLE  -  activer si pas de 'replace' ni de 'split'
#    line1.replace("1003" , "toto").replace("1006" , "road").split(" @ ")[1]    # desactiver si pas de 'replace' ni de 'split'
    for line1 in open(file1)           # main line   # <--- INDISPENSABLE
    if not re.search("data" , line1)
    if not line1.isspace()
    if not line1.startswith("l")
    if not "new" in line1
    if any(good_word in line1 for good_word in good_words)    # patterns ecrits ds GOODWORDS
    ]

    print ''.join(w1)
#    print "@@@@## " , count , " @@@@ " , file1 , " @@@@\n" , ''.join(w1)      # habillage incluant le 'count'
    print "end ---"
    w1b = ''.join(w1)     # adapter le '\n' avec le resultat (depend du split)
    fz1.write(w1b)
    fz1.write("end ---" + "\n")    # ecrit "end" a la fin des fichiers y-
    count+=1
fz1.close()

print "#######################"

print "---> resultat ds 1 seul fichier ds : OUTONEFILE"
print "oubien "
print "---> resultat ds multi fichiers de prefixes :   y-3a-.."

# resultat ds 1 seul fichier :
# start ---                      
# first capture 4                
# first town 9                  
# end ---                       
# start ---                        
# second capture 4              
# second town 7                  
# end ---                         

#%_3202

haut

La comprehension de listes : FOR IN IF


#@_3209y_comprehension_de_listes_forinif!!read_splitlines_append_range_map_filter_lambda

IN="2-in.txt"    # fichiers de chiffres en 'strings'

# IN :
# 1
# 3
# 5
# 7
# 9
# 6
# 6
# 6
# 8

# comprehension de liste :
w1 = [int(x) for x in open(IN).read().splitlines() if x > "5"]
print w1     # [7, 9, 6, 6, 6, 8]     # en integers

w1 = [x for x in open(IN).read().splitlines() if x > "5"]
print w1     #  ['7', '9', '6', '6', '6', '8']      # en strings

# sans comprehension de liste :
b = []
mylist = open(IN).read().splitlines()

for x in mylist:
    if x > 5:           # doit etre en 'integers'
        print x , type(x)    # type 'int'
        b.append(x)      # liste d 'integers'
print b     # [7, 9, 6, 6, 6, 8]
print "----------------"

###########################

# equivalent de 'map'

b2 = []
mylist2 = [2*x for x in range(8)]
# mylist2 = map(lambda x: 2*x , range(8))     # equivalent

for z in mylist2:
    print z
    b2.append(z)   #     # liste d 'integers'
print b2        # [0, 2, 4, 6, 8, 10, 12, 14]
print "----------------"

###########################

# equivalent de 'filter'

b3 = []
mylist3 = [x for x in range(8) if x > 5 and x < 7]
# mylist3 = filter(lambda x: x > 5 , range(8))

for w in mylist3:
    print w
    b3.append(w)
print b3           # [6]
print "----------------"

###########################

# equivalent de 'filter o map'

b4 = []
mylist4 = [2*x for x in range(8) if 2*x > 5]

for v in mylist4:
    print v
    b4.append(v)
print b4          # [6, 8, 10, 12, 14]
print "----------------"

###########################

# equivalent de 'map o map'

b5 = []
mylist5 = [x+1 for x in [2*x for x in range(8)] if x > 5 and x < 13]

for u in mylist5:
    print u
    b5.append(u)
print b5          # [7, 9, 11, 13]

#%_3209

haut

Ce que WITH OPEN permet de faire : startswith sub replace split (exemple pour un seul fichier)


#!/usr/bin/python

#@_3092y_modifier_withopen_permet_startswith_sub_replace_split!!withopen_startswith_sub_replace_split

import os
import re

# DEPART :
# verb abandon @@  verb %%
# verb abandon @@   (transitive)
# verb abandon @@  to forsake completely; desert; leave behind
# % abstain @@  to choose to refrain -data to remove-
# % abstain @@  he abstained from alcohol 
# % abstain @@  to refrain from voting -to delete from text-


f16 = open("test-withopen-out.txt" , 'w')
with open("test-withopen.txt" , "r") as f15:
    for line15 in f15:

	if line15.startswith("%"):
	    line15 = re.sub('data to remove' , '' , line15)
#            line15 = re.sub('from.*?ing' , '' , line15)
	    line15 = line15.replace("" , "") \
	    .replace("to delete from text" , "")

	    w1 = line15.split(" ")[1].strip()
	    w2 = line15.split("@@")[1].strip()
	    new = w1 + " @@ " + w2
	    print new
	    f16.write(new + "\n")

	else:
	    print line15.strip()
	    f16.write(line15)

f15.close()
f16.close()

# resultat :
# verb abandon @@  verb %%
# verb abandon @@   (transitive)
# verb abandon @@  to forsake completely; desert; leave behind
# abstain @@ to choose to refrain --
# abstain @@ he abstained from alcohol
# abstain @@ to refrain from voting --

#%_3092

haut

Ce que WITH OPEN permet de faire : sub ifin replace (exemple pour plusieurs fichiers)


#!/usr/bin/python

#@_3093y_modifier_withopen_inoutplusieursfichiers_sub_ifin_replace!!withopen_inoutplusieursfichiers_sub_ifin_replace

import os
import re

# exemple d'1 fichier c- :
# %% Word forms:
# &&& adopts
# &&& adopting
# &&& adopted
# &&& (other words)

os.chdir(PATHHOME)
for id21 in open(LISTEIN):       # IN
    id21=id21.strip()
    id21b=id21.split("-")[1].split(".")[0]
#    print id21b

    os.chdir(PATHOUT)
    f22 = open("d-" + id21b + ".txt" , "w")    # OUT

    os.chdir(PATHIN)
    with open(id21 , "r") as f21:
        for line21 in f21:

            line21 = re.sub('&&& \(' , '' , line21)
            if '&&& ' in line21:

                line21 = line21.replace('&&& ' , '')

                f22.write(line21)

f22.close()

# resultat : (fichier d-)
# adopts
# adopting
# adopted

#%_3093

haut

Ce que "RANGE LEN" permet de faire : capturer lignes avant ou apres un pattern


#!/usr/bin/python

#@_3094y_capture_ligne_avant_apres_pattern!!split_readlines_range_len_endswith

LISTA="2-liste-a.txt"

# LISTA :
# a-file1.txt
# a-file2.txt

# a-file1.txt :
# text to delete
# accentuating
# accentuated
# end

# a-file2.txt :
# text to delete
# accounting
# accounted
# end


PATTERN1="ing"
PATTERN2="ed"

#os.chdir(PATHHOME)
for id25 in open(LISTA):
    id25=id25.strip()
    id25b=id25.split("-")[1].split(".")[0]
    print id25b

#    os.chdir(PATHB)
    f26 = open("b-" + id25b + ".txt" , "w")

#    os.chdir(PATHA)

    data = open (id25).readlines()
    for i in range(len(data)):
        data[i] = data[i].strip()
        data[i] = data[i].replace('text to delete' , '')

#        if data[i].endswith(PATTERN):
        if data[i].endswith(PATTERN1) or data[i].endswith(PATTERN2):

            print data[i-1].strip()
            print data[i].strip()
            print data[i+1].strip()
            f26.write(data[i-1] + "\n")
            f26.write(data[i] + "\n")
            f26.write(data[i+1] + "\n")

f26.close()

# resultat :
# b-file1
#
# accentuating
# accentuated
# accentuating
# accentuated
# end
# b-file2
#
# accounting
# accounted
# accounting
# accounted
# end

#%_3094

haut

Ce que "RANGE LEN" permet de faire : read() splitlines() split isdigit isalpha


#!/usr/bin/python

#@_3095y_capture_ligne_si_condition_colonne_et_pattern!!read_splitlines_range_len_split_isdigit_isalpha

# in.txt :
# line1 user
# line2 25
# line3 data
# line4 100

mylist = open ("in2.txt").read().splitlines()

print mylist         # tout le fichier dans une liste
print len(mylist)   # 4

for i in range(len(mylist)):
    if mylist[i].split()[1].isdigit():
        print mylist[i]
print ""

for i in range(len(mylist)):
    if mylist[i].split()[1].isalpha():
        print mylist[i]

# resultat :
# ['line1 user', 'line2 25', 'line3 data', 'line4 100']
# 4
# line2 25
# line4 100

# line1 user
# line3 data

#%_3095

haut

Ce que "RANGE LEN" permet de faire : ajouter un titre devant chaque ligne d'un fichier



#!/usr/bin/python

#@_3096y_ajouter_titre_devant_ligne!!read_splitlines_range_len_ifin_join_break

IN1="in1.txt"
IN2="in2.txt"
OUT="out.txt"

# in1.txt
# @ name
# -rw-------   1 name users    51157
# -rw-r--r--   1 name users      189
# @ @qosmic/1.11/config/Windows2Local/Modes:
# -rw-rw-rw-  1 name users 1607
# -rw-rw-rw-  1 name users  357
# @ @java/fonts/1.8.0_71:
# -rw------- 1 name users 34937
# -rw------- 1 name users 38241

# 1_ ajouter 2 lignes a la fin du fichier:

open (IN2 , "w").write ( open (IN1).read() + "end@end\n")

print " ---> ok habillage : ajouter 2 lignes a la fin de OUT2C dans : " , IN2

# 2_ marquer 1 titre devant chaque ligne

mylist = open (IN2).read().splitlines()
fw = open(OUT , 'w')

#print mylist         # print tout le fichier dans une liste
print "      --> nb de lignes de IN2 : " , len(mylist)

for i in range(len(mylist)):
#    print i       # print le compteur de toutes les lignes (de 1 a la fin)
    if "@ " in mylist[i]:
        w = mylist[i]
 #       print w
#        fw.write(w)
    if not "@ " in mylist[i]:
        print w , "%%%" , mylist[i]
        w2 = w + "%%%" + mylist[i]
	w3 = ''.join(w2)
	fw.write(w2 + "\n")

    if "end@end" in mylist[i]:
        break
fw.close()

# resultat :
#       --> nb de lignes de IN2 :  10
# @ name %%% -rw-------   1 name users    51157
# @ name %%% -rw-r--r--   1 name users      189
# @ @qosmic/1.11/config/Windows2Local/Modes: %%% -rw-rw-rw-  1 name users 1607
# @ @qosmic/1.11/config/Windows2Local/Modes: %%% -rw-rw-rw-  1 name users  357
# @ @java/fonts/1.8.0_71: %%% -rw------- 1 name users 34937
# @ @java/fonts/1.8.0_71: %%% -rw------- 1 name users 38241
# @ @java/fonts/1.8.0_71: %%% end@end

#%_3096

haut

Ce que "WHILE LINE" permet de faire : lecture ligne par ligne d'un fichier



#!/usr/bin/python

#@_3097y_convertir_ASCII_en_HEXA_break_special!!read_splitlines_readline_encode_hex_sub_str_join_break

import binascii
import base64
import re
import time

TIME=0

# @ @local: %%
# @ @local/share: %% -rw------- 1
# @ @local/share: %%
# @ @local/share/Trash: %% -rw------- 1
# @ @local/share/Trash: %%
# @ @local/share/Trash/files: %% -rw-rw-r-- 1
# ici ligne de caracteres speciaux (impossible a ecrire en html)

# 1-liste-hexa.txt :
# 7e
# b1
# f4

carac = open ("1-liste-hexa.txt").read().splitlines()

count = 1
fd1 = open("test-hexa-mini2.txt" , "r")
#fd1 = open(OUT2A , "r")
fd2 = open("out.txt" , "w")        # ecriture avec arret au break

line = fd1.readline()

while line:

    m = line.encode("hex").strip()
    m2 = re.sub('([0-9,a-z][0-9,a-z])', r'\1 ', m)
    print str(count) , " - " , m2
    m3 = str(count) , " - " , m2
    m4 = ''.join(m3)

    if any(word in m2 for word in carac):
        fd2.write(m4 + "\n")         # ecriture uniquement de la ligne de caracteres speciaux
	break
    line = fd1.readline()

    fd2.write(m4 + "\n")     # ecriture sans la ligne de caracteres speciaux
    count = count + 1
    time.sleep(TIME)

fd2.close()

# resultat :
# 1  -  40 20 40 6c 6f 63 61 6c 3a 20 25 25 20 0a
# 2  -  40 20 40 6c 6f 63 61 6c 2f 73 68 61 72 65 3a 20 25 25 20 2d 72 77 2d 2d 2d 2d 2d 2d 2d 20 31 20 0a
# 3  -  40 20 40 6c 6f 63 61 6c 2f 73 68 61 72 65 3a 20 25 25 20 0a
# 4  -  40 20 40 6c 6f 63 61 6c 2f 73 68 61 72 65 2f 54 72 61 73 68 3a 20 25 25 20 2d 72 77 2d 2d 2d 2d 2d 2d 2d 20 31 20 0a
# 5  -  40 20 40 6c 6f 63 61 6c 2f 73 68 61 72 65 2f 54 72 61 73 68 3a 20 25 25 20 0a
# 6  -  40 20 40 6c 6f 63 61 6c 2f 73 68 61 72 65 2f 54 72 61 73 68 2f 66 69 6c 65 73 3a 20 25 25 0a
# 7  -  7e 06 30 b1 f4 13 e4 de ea 8a 8e 8c 08 b6 74 a2 61 8e e9 37 36 3a ee 9b 6f f3 91 de 52 6c 05 77 5a 6f ec 08 57 92

#%_3097

haut

while 1: Choisir un titre et le repeter devant les lignes


#!/usr/bin/python

#@_3198y_coller_titre_devant_lignes_while1!!readline_break_ifin_split_flag_split_join

IN1="in.txt"
IN2="in-2.txt"
OUT="out.txt"

PATTERN="tape"

# START = in.txt :
# abc vexecgct tape 6014
# 200 5 1000 col4 col5 col6
# 201 5 900 col4 col5 col6
# 202 5 850 col4 col5 col6
# 203 5 830 col4 col5 col6
# 204 5 810 col4 col5 col6
# data3 col2 col3 col4 col5
# data4 col2 col3 col4 col5
# bcd vexecgct tape 6015
# info1a col2 col3 col4 col5
# info2a col2 col3 col4 col5
# cde vexecgct tape 6016
# data7 124 5476 819 337
# data8 173 2416 379 344
# data9 22 713 4389 773


# ajouter 1 ligne vide en ligne 1

open (IN2 , "w").write ( " \n" + open (IN1).read())  

#######################

f1 = open (IN2 , 'r')
f2 = open (OUT , "w")
line = f1.readline()         # indispensable

while 1:
    line = f1.readline()    # indispensable
    line = line.rstrip()        # indispensable

    if not line:         # arret a la fin du fichier
        break
    
#    if "endendend" in line:         # arret a la fin du fichier
#        break

#    if line.startswith(PATTERN):
    if PATTERN in line:
        w = line.split()[3]           # variable memorisee
        flag=0                # indispensable

        flag=1                # indispensable        
#        z = line                               # sans separation  - schema de la ligne a ecrire

        line2 = line.split()[3] , line         # avec separation - syntaxe modifiee
        line3 = ' '.join(line2)                # avec separation - syntaxe modifiee 
        m = "--------------------\n" , line3      # avec separation
        z = ''.join(m)                           # avec separation - schema de la ligne a ecrire

#    if not line.startswith(PATTERN):
    if not PATTERN in line:
        y = w , line              # schema de la ligne a ecrire  (en tuple)
        z = ' '.join(y)         # ok flag est deja = 1
        
    if flag:
        print z                # ligne finale ecrite
        f2.write(z + "\n")
f2.close()

# resultat :
# --------------------
# 6014 abc vexecgct tape 6014
# 6014 200 5 1000 col4 col5 col6
# 6014 201 5 900 col4 col5 col6
# 6014 202 5 850 col4 col5 col6
# 6014 203 5 830 col4 col5 col6
# 6014 204 5 810 col4 col5 col6
# 6014 data3 col2 col3 col4 col5
# 6014 data4 col2 col3 col4 col5
# --------------------
# 6015 bcd vexecgct tape 6015
# 6015 info1a col2 col3 col4 col5
# 6015 info2a col2 col3 col4 col5
# --------------------
# 6016 cde vexecgct tape 6016
# 6016 data7 124 5476 819 337
# 6016 data8 173 2416 379 344
# 6016 data9 22 713 4389 773

#%_3198

haut

Un fichier a 2 colonnes commande l'habillage d'un autre fichier


#!/usr/bin/python

#@_3188y_while_fichier_2_colonnes_commande_habillage_d_1_autre_fichier!!while_read_splitlines_len_split_break

SEPAR="1-min-max-cut.txt"
IN="1-min-max.txt"
OUT="2-min-max-result.txt"

# 1-min-max.txt :
# SY1101 1533 3017
# SY1102 1503 3060
# SY1103 1478 3094
# SY1104 1474 3121
# SY1105 1451 3196
# SY1106 1434 3239
# SY1107 1422 3273
# SY1108 1392 3300
# SY1109 1354 3374
# SY1110 1324 3417

# 1-min-max-cut.txt :
# SY1101 SY1104
# SY1105 SY1107
# SY1108 SY1110


f1 = open(SEPAR , 'r')
fw = open(OUT , 'w')

k=0
for line1 in f1:
    start = line1.split()[0]
    end = line1.split()[1]

    f2 = open (IN).read().splitlines()

    while k < len(f2):
        item1 = f2[k].split()[0]
        item1b = f2[k].split()[1]
        print item1 , item1b
        w = item1 + " " + item1b
        fw.write(w + "\n")
        
        if item1 == end:
            k=k+1
            print "-------------"
            fw.write("-------------\n")
            break
        k=k+1

# resultat :
# SY1101 1533
# SY1102 1503
# SY1103 1478
# SY1104 1474
# -------------
# SY1105 1451
# SY1106 1434
# SY1107 1422
# -------------
# SY1108 1392
# SY1109 1354
# SY1110 1324
# -------------

#%_3188

haut

Un fichier a 2 colonnes commande (avec debut-fin) le decoupage en plusieurs fichiers


#!/usr/bin/python
#@_3189y_while_fichier_commande_decoupage_en_plusieurs_fichiers!!while_len_split_splitlines_str

SEPAR="1-min-max-cut.txt"
IN="1-min-max.txt"
OUT="2-min-max-result.txt"

# IN :
# SY1101 1533 3017
# SY1102 1503 3060
# SY1103 1478 3094
# SY1104 1474 3121
# SY1105 1451 3196
# SY1106 1434 3239
# SY1107 1422 3273
# SY1108 1392 3300
# SY1109 1354 3374
# SY1110 1324 3417

# SEPAR :          # (commande le decoupage)
# SY1101 SY1104           # col1 : debut
# SY1105 SY1107           # col2 : fin
# SY1108 SY1110


f1 = open(SEPAR , 'r')

k=0
count=1
for line1 in f1:
    start = line1.split()[0]
    end = line1.split()[1]

    f2 = open (IN).read().splitlines()
    fw = open("z-" + str(count) + "-" + start + ".txt" , 'w')

    while k < len(f2):
        item1 = f2[k].split()[0]
        item1b = f2[k].split()[1]
        print item1 , item1b
        w = item1 + " " + item1b
        fw.write(w + "\n")
        
        if item1 == end:
            k=k+1
            print ""
            fw.write("")
            count=count+1

            break
        k=k+1

# resultat : 3 fichiers
# z-1-SY1101.txt :
# SY1101 1533
# SY1102 1503
# SY1103 1478
# SY1104 1474

# z-2-SY1105.txt :
# SY1105 1451
# SY1106 1434
# SY1107 1422

# z-3-SY1108.txt :
# SY1108 1392
# SY1109 1354
# SY1110 1324

#%_3189

haut

FOR cree 1 liste de fichiers + ouverture + WHILE boucle sur les lignes + JOIN convertit en 'string'


#!/usr/bin/python

#@_3223y_concatener_des_fichiers!!forinif_listdir_startswith_append_readline_while

import os
import re

# BUT : creation d'1 liste de fichiers --> append de ces fichiers
# lecture ligne par ligne des fichiers


PATTERN1="in"

PATHHOME="/Python27/tests-2017-10"

file_list = []         # liste de fichiers

f2 = open ("out-3223-A.txt" , "w")    

for file in \
[ doc for doc in os.listdir(PATHHOME)

if doc.startswith(PATTERN1)
#or doc.startswith(PATTERN2) 
]:                            # attention au crochet fermant ]

    file_list.append(file)    # creation de la liste de fichiers a concatener

for file in file_list:

    fr = open (file, 'r')
    line = fr.readline()   # lecture ligne par ligne
    count = 1
    while line:       # boucle sur les lignes

        w = file , " : " , str(count) , " _ " , line.strip()
        w2 = ''.join(w)
        print w2        
        f2.write(w2 + "\n")     # ecriture de la concatenation
        line = fr.readline()
        count = count + 1

f2.close()

# resultat :
# in1.txt : 1 _ data1 line1
# in1.txt : 2 _ data1 line2
# in2.txt : 1 _ data2 line1
# in2.txt : 2 _ data2 line2
# in3.txt : 1 _ data3 line1
# in3.txt : 2 _ data3 line2

#%_3223

haut

WHILE ouvre les fichiers et lit les lignes en 'liste' + JOIN les convertit en 'string'


#!/usr/bin/python

#@_3224y_concatener_des_fichiers!!while_read_splitlines_join

import os
import re

PATHHOME="/Python27/tests-2017-10"

f2 = open ("out-3224-B.txt" , "w")    

i = 1
while i < 4:
    w2 = [line for line in open("in" + str(i) + ".txt").read().splitlines()
#    if line.startswith("data")
    ]
    w2b = '\n'.join(w2)
    print w2b
    f2.write(w2b + "/n")
    i += 1
 
# resultat :
# data1 line1
# data1 line2
# data2 line1
# data2 line2
# data3 line1
# data3 line2

#%_3224

haut

WHILE ouvre les fichiers et lit les lignes en 'string'


#!/usr/bin/python

#@_3225y_concatener_des_fichiers!!while_forinif_str_read_splitlines

import os
import re

file_list = []         #declarer 1 liste de fichiers

f2 = open ("out-3225-C.txt" , "w")    

# exemple 1/2

i = 1
while i < 4:
    for line in \
    [ file for file in open("in" + str(i) + ".txt").read().splitlines()
#    if file.endswith("py")
    ]:                            # attention au crochet fermant ]
        print line
        f2.write(line + "\n")
    i += 1

print "-----------"
###################################

# exemple 2/2

i = 1
while i < 4:
    w = [ file for file in open("in" + str(i) + ".txt").read().splitlines()
    ]                            # attention au crochet fermant ]
    for j in w:             
        print j    
    i += 1

# resultat :
# data1 line1
# data1 line2
# data2 line1
# data2 line2
# data3 line1
# data3 line2

#%_3225

haut

Creation d'1 liste de fichiers + FOR ouvre les fichiers + WHILE lit les lignes en liste + JOIN convertit en 'string'


#!/usr/bin/python

#@_3226y_concatener_des_fichiers!!forinif_readline_while_str_join

import os
import re

PATHHOME="/Python27/tests-2017-10"

f2 = open ("out-3226-D.txt" , "w")    

newlist = [i for i in os.listdir(PATHHOME) if i[0:2] == "in"]   # i[-4:] == ".txt"

for file in newlist:
#    print file         # 3 fichiers
    
    fr = open (file, 'r')                 
    line = fr.readline()   # lecture ligne par ligne
    count = 1
    while line:       # boucle sur les lignes

        w = file , " : " , str(count) , " _ " , line.strip()
        w2 = ''.join(w)
        print w2
        
        f2.write(w2 + "\n")     # ecriture de la concatenation
        line = fr.readline()
        count = count + 1

f2.close()

# resultat :
# in1.txt : 1 _ data1 line1
# in1.txt : 2 _ data1 line2
# in2.txt : 1 _ data2 line1
# in2.txt : 2 _ data2 line2
# in3.txt : 1 _ data3 line1
# in3.txt : 2 _ data3 line2

#%_3226

haut

WHILE cree 1 liste de fichiers + FOR ouvre les fichiers + WHILE lit les lignes en liste + JOIN convertit en 'string'


#!/usr/bin/python

#@_3227y_concatener_des_fichiers!!while_listdir_forinif_readline_str_join

import os
import re

PATHHOME="/Python27/tests-2017-10"

f2 = open ("out-3117-E.txt" , "w")    

i = 1
while i < 4:       # 1ere boucle WHILE sur les fichiers

    newlist = [file for file in os.listdir(PATHHOME) if file == ("in" + str(i) + ".txt")]   

    for file in newlist:

        fr = open (file, 'r')
        line = fr.readline()   # lecture ligne par ligne

        count = 1
        while line:              # 2eme boucle WHILE sur les lignes
            w = file , " : " , str(count) , " _ " , line.strip()
            w2 = ''.join(w)
            print w2        
            f2.write(w2 + "\n")     # ecriture de la concatenation
            line = fr.readline()
            count = count + 1
    i += 1

f2.close()

# resultat :
# in1.txt : 1 _ data1 line1
# in1.txt : 2 _ data1 line2
# in2.txt : 1 _ data2 line1
# in2.txt : 2 _ data2 line2
# in3.txt : 1 _ data3 line1
# in3.txt : 2 _ data3 line2

#%_3227

haut

PASTE de 2 fichiers


#!/usr/bin/python

#@_3199y_joindre_2_files_side_by_side_equivalent_paste!!openr_rstrip_readline

INTER1="1-pastefile1.txt"
INTER2="1-pastefile2.txt"
INTER3="1-pastfile-result.txt"

# INTER1 :
# A1 A2 A3
# A4 A5 A6
# A7 A8 A9

# INTER2 :
# B1 B2 B3
# B4 B5 B6
# B7 B8 B9


# merge 2 files side by side

comp1 = open (INTER1 , "r")
comp2 = open (INTER2 , "r")
f5 = open (INTER3 , "w")     

for line in comp1:

    wcomp = line.rstrip() + " " + comp2.readline().strip()
    print wcomp
    f5.write(wcomp + "\n")

comp1.close()
comp2.close()
f5.close()

# resultat
# A1 A2 A3 B1 B2 B3
# A4 A5 A6 B4 B5 B6
# A7 A8 A9 B7 B8 B9
#%_3199

haut

PASTE de 2 listes : ZIP


#!/usr/bin/python

#@_3200y_inserer_trait_separation_ds_1_fichier_si_colonne_1_change!!splitlines_zip_split_break

IN="1-separe-trait2.txt"
PASTE="1-separe-trait-paste.txt"
RESULT="1-separe-trait-result.txt"

# IN :        # contient plusieurs colonnes

# accepter     %     accept     %     transitive verb @@
# accepter     %     agree     %     transitive verb @@
# accommoder     %     accommodate     %     transitive verb @@
# accompagner     %     attend     %     transitive verb @@
# accomplir     %     accomplish     %     transitive verb @@
# accomplir     %     achieve     %     transitive verb @@
# end @@
# end @@


# shift de la ligne 1 + PASTE (affichage cote a cote)
#      + insertion d'1 trait de separation

f1 = open (RESULT ,'w')    

data = open(IN , 'r').read().splitlines()
datanew = data[1:]                  # ligne 1 supprimee

w = zip(data , datanew)             # creation du PASTE
for j in w:
    road = ' '.join(j)

    line1 = road.split("@@")[0]
    line2 = road.split("@@")[1]

    col1line1 = line1.split()[0]
    col1line2 = line2.split()[0]
    
    if col1line1 == col1line2:
        print line1
        f1.write(line1 + "\n")
    
    if col1line1 != col1line2:
        print line1 , "\n--------------"
        road = line1 , "\n--------------"
        road2 = ''.join(road)
        f1.write(road2 + "\n")

    if "end" in road:
        break
    
f1.close()

# resultat :

# accepter     %     accept     %     transitive verb 
# accepter     %     agree     %     transitive verb  
# --------------
# accommoder     %     accommodate     %     transitive verb  
# --------------
# accompagner     %     attend     %     transitive verb  
# --------------
# accomplir     %     accomplish     %     transitive verb 
# accomplir     %     achieve     %     transitive verb  
# --------------
# end 

#%_3200

haut

Capturer en verticale et horizontale


#!/usr/bin/python

#@_3098y_capture_colonne_ligne_tableau!!tableau_readlines_isdigit_join

import os
import re
import time
import glob

IN="in2.txt"
OUT="out.txt"
OUT2="out2.txt"

# IN
# line1 user
# line2 25
# line3 data
# line4 100

# en colonne - verticale : capture des caracteres de fin de ligne

f2 = open(OUT , "w")
f1 = open(IN , 'r')
for line in f1:
    line = line.strip()
    print line[-3:]
    f2.write(line[-3:] + "\n")

    if line[-1:].isdigit():     # isdigit()
        print line.strip()
	f2.write(line + "\n")
f2.close()

# resultat :
# ser
#  25
# line2 25       # issue de isdigit()
# ata
# 100
# line4 100         # issue de isdigit()

#####

# capturer en ligne horizontale : capture ciblee de lignes

print ""

f3 = open(IN , 'r').readlines()
f4 = open(OUT2 , 'w')

# w = f3[-2]        # avant derniere ligne uniquement

w1 = f3[-2:]       # les 2 dernieres lignes
w1a = ''.join(w1)
print w1a            # derniere ligne
f4.write(w1a)

# resultat :
# line3 data
# line4 100

#%_3098

haut

Une colonne indique le nombre de fois qu'une ligne doit etre repetee


#!/usr/bin/python

#@_3099y_count_la_colonne_1_indique_le_nombre_de_repetitions_d_1_ligne!!withopen_split_str_int_range

# in.txt
# 3 animal line1
# 2 car line2
# 3 airplane line3

with open ("in.txt" , 'r') as fww:
    fd1 = open ("out.txt" , 'w')     
    for ligne1 in fww:

        m1 = ligne1.split()[0].strip()
        m2 = ligne1.split()[1].strip()
        m3 = ligne1.split()[2].strip()

        m = m2 + " " + m3
        mc = str(m)

        m1b=int(m1)
        for i in range(m1b):
            print m1 , m

            fd1.write(m1 + " " + mc + "\n")

fww.close()
fd1.close()

# out.txt
# 3 animal line1
# 3 animal line1
# 3 animal line1
# 2 car line2
# 2 car line2
# 3 airplane line3
# 3 airplane line3
# 3 airplane line3
#%_3099

haut

Capturer la 1 ere et derniere ligne d'une colonne marquee par un separateur


#!/usr/bin/python

#@_3100y_inserer_trait_separ_first_last_occurrence_pattern_col1!!readlines_range_len_split

# data1.txt
# S    97-2520                4968  163148   449213  6749438          239
# S    97-2520                4969  163159   449178  6749506          239
# S    97-2520                4970  163210   449250  6749472          239
# S    SF1724                  717  152056   387433  6659358          117
# S    SF1724                  718  152106   387484  6659343          117
# S    SF1724                 1870  184159   408916  6678563          117
# S    SF1724                 1871  184212   408906  6678617          117
# S    SF1732                  721  215615   387399  6659538          133
# S    SF1732                  722  215626   387448  6659525          133
# S    SF1732                 1865  014230   408636  6678680          134
# S    SF1732                 1866  014242   408688  6678669          134
# S    SF1740                  721  075653   387267  6659683          133
# S    SF1740                  722  075703   387316  6659671          133
# S    SF1740                  723  075714   387305  6659719          133
# S    SF1740                  724  075723   387354  6659706          133


# 1_ marquer la colonne de travail par 1 separateur : @

#+_3100_capture_colonnes!!readlines_range_len_split

data1 = open ("data1.txt").readlines()
fp = open ("1-nav1.txt","w")     
for i in range(len(data1)):

    new1 = data1[i].split()[0]
    new2 = data1[i].split()[1]
    new3 = data1[i].split()[2]
    new4 = data1[i].split()[3]
    new5 = data1[i].split()[4]
    new6 = data1[i].split()[5]
    new7 = data1[i].split()[6]

    m =  new1 + " @ " + new2 + " @ " + new3 + " " + new4 + " " + new5 + " " + new6 + " " + new7
    fp.write(m + "\n")
#-
###################

# 2_ capture des premieres et dernieres lignes ayant meme pattern en colonne 2

#+_3100_inserer_trait_separation_tableau!!readlines_range_len_split

data2 = open ("1-nav1.txt").readlines()
fp = open ("1-nav2.txt","w")     
for i in range(len(data2)):

    if data2[i+1].split("@")[1] != data2[i].split("@")[1]:

        print data2[i].strip()
        print "---"
        print data2[i+1].strip()

        m1 = data2[i].strip()
        m2 = "---"
        m3 = data2[i+1].strip()

        fp.write(m1 + "\n" + m2 + "\n" + m3 + "\n")
#-
# resultat

# S @ 97-2520 @ 4970 163210 449250 6749472 239
# ---
# S @ SF1724 @ 717 152056 387433 6659358 117
# S @ SF1724 @ 1871 184212 408906 6678617 117
# ---
# S @ SF1732 @ 721 215615 387399 6659538 133
# S @ SF1732 @ 1866 014242 408688 6678669 134
# ---
# S @ SF1740 @ 721 075653 387267 6659683 133
#%_3100

haut

Noter les lignes ou les patterns d'une colonne changent


#!/usr/bin/python

#@_3101y_capture_marquer_lignes_dont_patterns_d_1_colonne_changent_tableau!!readlines_range_len_split_int_str_join

LISTE="1-file.txt"

# LISTE :
# 239
# 239
# 239
# 117
# 117
# 117
# 117
# 133
# 133
# 134
# 134
# 133
# 133
# 133


data2 = open (LISTE).readlines()
fp = open ("out.txt","w")     

for i in range(len(data2)):
    new1 = data2[i].split()[0]
    new2 = data2[i+1].split()[0]

    new1b = int(new1)
    new2b = int(new2)

    if new1b != new2b:
        print "lignes " , i+1 , " - " , i+2 , "  :  " , new1 , " --> " , new2
        new3 = "ligne " , str(i+1) , " - " , str(i+2) , " : " , new1 , " --> " , new2
        new4 = ''.join(new3)

        fp.write(new4 + "\n")
fp.close()

# resultat :
# lignes  3  -  4   :   239  -->  117
# lignes  7  -  8   :   117  -->  133
# lignes  9  -  10   :   133  -->  134
# lignes  11  -  12   :   134  -->  133
#%_3101

haut

Selectionner les lignes ayant plus d'un champ


#!/usr/bin/python

#@_3102y_capture_lignes_ayant_plus_d_1_champ!!withopen_split_len_join

with open("start.txt" , "r") as f:
    fw = open ("out.txt" , "w")      
    for line in f:
        b = line.split()
        if len(b) > 1:
            print ' '.join(b)
            fw.write(' '.join(b) + "\n")
f.close()
fw.close()
#%_3102

haut

Marquer les lignes ayant plus d'un champ


#!/usr/bin/python

#@_3103y_ajouter_texte_fin_de_ligne_si_nb_champs_depasse_limite!!withopen_split_len_join

# BUT : marquer les lignes si nombre de champs est superieur a 1

IN="1-in-marquer-champs.txt"

# IN
# line1 data1 data2
# line2 data3 data4
# line3
# line4

with open(IN , "r") as f:
    fw = open ("out.txt" , "w")      
    for line in f:
        b = line.split()
        if len(b) <= 1:
            print ' '.join(b)
            fw.write(' '.join(b) + "\n")

        if len(b) > 1:
            w = ' '.join(b) , "end"
            w2 = ' '.join(w)
            print w2
            fw.write(' '.join(w) + "\n")

f.close()
fw.close()

# resultat :
# line1 data1 data2 end
# line2 data3 data4 end
# line3
# line4

#%_3103

haut

GREP avec 'for in if' (exemple 1/7)


#!/usr/python

#@_3215y_grep_avec_forinif!!oslistdir_forinif_search_join

# 1/7_ GREP avec 'FOR IN IF'
#----------------------------------

import re
import os

PATH="/Python27/tests-2017-10"

PATTERN="%%-"

# 1-in1.txt :
# %%-85 title1
# data1
# line3
# %%-62 title2
# data2

fz1 = open("out2.txt" , 'w')      

newlist = [i for i in os.listdir(PATH) if i[0:3] == "in1"]

for file1 in newlist:

    w1 = [
    line1
    for line1 in open(file1)           # main line 
    if re.search(PATTERN , line1)
    ]

    print ''.join(w1)
    w1b = ''.join(w1)     # adapter le '\n' avec le resultat (depend du split)
    fz1.write(w1b)
fz1.close()

# resultat :
# %%-85 title1
# %%-62 title2

#%_3215

haut

GREP avec 'match' (exemple 2/7)


#!/usr/python

#@_3216y_grep_avec_match!!forinif_match_read_splitlines

# 2/7 _ grep avec "MATCH"
# -----------------------

import re

IN="in2.txt"

# IN :
# 5
# 6
# 5
# 8
# 3
# 8
# 9
# 6

f = open(IN , 'r')        
#f = open(IN , 'r').readlines()        # resultat identique 

w = [i for i in f if not re.match("8" , i)]

print ''.join(w)

########

f = open(IN , 'r').read().splitlines()       # retire le  \n
#f = open(IN , 'r').read().split()       # resultat identique

w = [i for i in f if not re.match("8" , i)]

print '\n'.join(w)     # rajouter le  \n

#resultat :
# 5
# 6
# 5
# 3
# 9
# 6

#%_3216

haut

GREP avec 'contenu +=' (exemple 3/7)


#!/usr/python

#@_3217y_grep_avec_accumulation!!ifin_+=

# 3/7 _ grep avec "contenu +="
#-----------------------------

# The protesters went to Washington to march against increased taxes.
# I'm working as a teaching assistant to support myself as a graduate student in order to get an advanced degree.
# Let us mark the occasion by opening a bottle of champagne.
# we really achieved something today   on a vraiment bien avance aujourd'hui 
# we need to build on our achievements   il faut consolider nos succes 


PATTERN = "achieve"     # pattern recherche
contenu = ""

f1 = open("in3.txt" , "r")
f2 = open("out3.txt" , 'w')

for line in f1:
    if PATTERN in line:
        contenu += line
        
print contenu       # caller cette ligne a colonne 0
f2.write(contenu)     # caller cette ligne a colonne 0

f1.close()
f2.close()

# resultat :
# we really achieved something today   on a vraiment bien avance aujourd'hui 
#  we need to build on our achievements   il faut consolider nos succes 

#%_3217

haut

GREP avec 'search' (exemple 4/7)


#!/usr/python

#@_3218y_grep_avec_search!!search

import re

# 4/7_ grep avec "SEARCH" 
# -------------------------

# in4.txt :
# lang="fr" >
# content=text
# abandon - English-French Dictionary WordReference.com
# description content=abandon - traduction anglais-francais
# Language content=fr

PATTERN = "abandon"     # pattern recherche

f2 = open("out4.txt" , 'w')
f1 = open("in4.txt" , 'r')
for line1 in f1:
#    if re.search("{0}".format(PATTERN) , line1):
    if re.search(PATTERN , line1):

        print line1.strip()
        f2.write(line1)
f2.close()

# resultat :
# abandon - English-French Dictionary WordReference.com
# description content=abandon - traduction anglais-francais

#%_3218

haut

GREP avec 'range len' (exemple 5/7)


#!/usr/python

#@_3219_grep_avec_range_len!!range_len

# 5/7_ grep avec "RANGE LEN"
# ----------------------------

# in5.txt :
# 6014 pattern
# 6014 : 200 5 1000 col4 col5 col6
# 6014 : data4 col2 col3 col4 col5
# 6015 pattern
# 6015 : info1a col2 col3 col4 col5
# 6015 : info2a col2 col3 col4 col5
# 6016 pattern
# 6016 : data7 124 5476 819 337
# 6016 : data9 22 713 4389 773
# 6017 pattern


fd30 = open ("in5.txt" , 'r').readlines()
fd31 = open ("out5.txt" , "w")     

for i in range(len(fd30)):

    if "pattern" in fd30[i]:
        print fd30[i-1].strip()
        fd31.write(fd30[i-1])
fd31.close()

# resultat :
# 6014 : data4 col2 col3 col4 col5
# 6015 : info2a col2 col3 col4 col5
# 6016 : data9 22 713 4389 773

#%_3219

haut

GREP avec 'startswith regex' (exemple 6/7)


#!/usr/python

#@_3220y_capture_patterns_multi_regex!!forinif_startswith_join

# 6/7_ grep avec 'STARTSWITH' et 'REGEX'
# --------------------------------------

# in6.txt :
# line1
# ----- data1
# python
# @ data2
# script
# !! data3
# end of test
# % text

regex1=("!" , "-")
regex2=("@" , "%")

fz1 = open("out6.txt" , 'w')            
w1 = [
# line.replace(".append" , "\nappend")
line
for line in open("in6.txt")          

if line.startswith(regex1) or line.startswith(regex2)
]
print ''.join(w1)
w1b = ''.join(w1)     # adapter le '\n' avec le resultat (depend du split)
fz1.write(w1b)
fz1.close()

# resultat : zout.txt :
# ----- data1
# @ data2
# !! data3
# % text

#%_3220

haut

GREP avec 'if any' (exemple 7/7)


#!/usr/bin/python

#@_3221y_capture_pattern_si_contenu_dans_1_fichier_IF_ANY!!read_splitlines_withopen_ifany_inforin

# 7/7_ grep avec IF ANY
# ---------------------

# in-goodword.txt :
# working as
# working for

# in7.txt :
# The protesters went to Washington to march against increased taxes.
# I'm working as a teaching assistant to support myself as a graduate student in order to get an advanced degree.
# Let us mark the occasion by opening a bottle of champagne.
# An advantage of working for the company is that they provide a pension scheme for their employees.
# Wear this oxygen mask till the pressure returns to normal.

good_words = open ("in-goodword.txt").read().splitlines()

with open("in7.txt") as oldfile:
    newfile = open ("out7.txt" , 'w')     
    for line in oldfile:
#        print line.strip()

        if any(good_word in line for good_word in good_words):
            print line.strip()
            newfile.write(line)
oldfile.close()
newfile.close()

# resultat :
# I'm working as a teaching assistant to support myself as a graduate student in order to get an advanced degree.
# An advantage of working for the company is that they provide a pension scheme for their employees.

#%_3221

haut

Afficher les occurrences uniques dans une colonne (exemple 1)


#!/usr/bin/python

#@_3104y_count_occurences_uniques_dans_colonne!!withopen_write_read_splitlines_while_tableau_split_pass

IN1="in1.txt"
IN2="in2.txt"
IN3="in3.txt"

# IN1 :
# earn  @@ to gain or be paid (money or other payment) in return for work or service
# earn  @@ (transitive)
# earn  @@ to acquire, merit, or deserve through behaviour or action
# edit  @@  (transitive)
# edit  @@ to prepare (text) for publication by checking and improving its accuracy, clarity, etc
# edit  @@ to be in charge of (a publication, esp a periodical)
# elaborate  @@ planned or executed with care and exactness; detailed
# elaborate  @@ marked by complexity, ornateness, or detail


# ajouter des lignes au debut et a la fin du fichier (a cause des messages d'erreur)

open(IN2 , "w").write("@startstart @@\n" + open(IN1).read() + "@endend @@\n@endend @@\n")

# script : utilisation d'1 tableau

f30 = open (IN2).read().splitlines()
f31 = open (IN3 , 'w')

k=1
while k < len(f30):
#    print k
    item1 = f30[k].split("@@")[0]
    item2 = f30[k+1].split("@@")[0]
#    print item1 , item2
    if item2 == item1:
        pass
    if item2 != item1:
        print item1
        f31.write(item1 + "\n")
    if "endend" in item1:
        break
    k=k+1
f31.close()

# resultat :
# earn
# edit
# elaborate

#%_3104

haut

Afficher les occurrences uniques dans une colonne (exemple 2)


#!/usr/bin/python

#@_3105y_count_occurrences_uniques_dans_1_colonne_tableau!!readlines_while_len_pop

IN="in.txt"
OUT="out.txt"

# IN :
# abide
# abide
# abide
# accept
# accept
# access
# access
# access


a = open (IN).readlines()
b = open (OUT , 'w')     

k=1
while k < len(a):
    if a[k] in a[k+1:]:
        a.pop(k)
    else:
        print a[k].strip()
        road = a[k]
        b.write(road)
        k=k+1
b.close()

# resultat : (occurrence unique)
# abide
# accept
# access

#%_3105

haut

Noter occurrence d'un pattern en colonne 1 (remise a 0 s'il change) zip paste shift


#!/usr/bin/python

#@_3196y_count_numero_lignes_dans_paragraphes_+_remise_a_zero!!splitlines_zip_join_split_str_break

IN="1-count-numero.txt"
OUT="1-count-numero-out.txt"

# IN : doit avoir @ en dernier caractere
#     + 1 ligne "start  :  start @"
#     + 2 lignes "end  :  end @"

# start  :  start @
# 6014  :  200 5 1000 col4 col5 col6 @
# 6014  :  201 5 900 col4 col5 col6 @
# 6014  :  202 5 850 col4 col5 col6 @
# 6014  :  203 5 830 col4 col5 col6 @
# 6014  :  204 5 810 col4 col5 col6 @
# 6014  :  data3 col2 col3 col4 col5 @
# 6014  :  data4 col2 col3 col4 col5 @
# 6015  :  info1a col2 col3 col4 col5 @
# 6015  :  info2a col2 col3 col4 col5 @
# 6016  :  data7 124 5476 819 337 @
# 6016  :  data8 173 2416 379 344 @
# 6016  :  data9 22 713 4389 773 @
# end  :  end @
# end  :  end @

f2 = open (OUT , "w")     

data = open(IN , 'r').read().splitlines()
datanew = data[1:]            # ligne 1 supprimee (equivalent au "shift")

count=0
w = zip(data , datanew)             # creation du PASTE

for j in w:
    road = ' '.join(j)
   
    line1 = road.split("@")[0]
    line2 = road.split("@")[1]

    col1line1 = line1.split()[0]
    col1line2 = line2.split()[0]

    if col1line1 == col1line2:
        print count , line1
        newa = str(count)
        newb = newa , " " , line1
        new2 = ''.join(newb)
        f2.write(new2 + "\n")

    if col1line1 != col1line2:
        print count , line1 , "\n--------------"
        newe = str(count)
        newf = newe , " " , line1 , "\n--------------"
        new4 = ''.join(newf)
        f2.write(new4 + "\n")

        count=0          # remise a zero pour le pattern suivant
    
    if "end" in road:
        break

    count=count+1

f2.close()

# resultat :
# 0 start  :  start 
# --------------
# 1 6014  :  200 5 1000 col4 col5 col6 
# 2 6014  :  201 5 900 col4 col5 col6 
# 3 6014  :  202 5 850 col4 col5 col6 
# 4 6014  :  203 5 830 col4 col5 col6 
# 5 6014  :  204 5 810 col4 col5 col6 
# 6 6014  :  data3 col2 col3 col4 col5 
# 7 6014  :  data4 col2 col3 col4 col5 
# --------------
# 1 6015  :  info1a col2 col3 col4 col5 
# 2 6015  :  info2a col2 col3 col4 col5 
# --------------
# 1 6016  :  data7 124 5476 819 337 
# 2 6016  :  data8 173 2416 379 344 
# 3 6016  :  data9 22 713 4389 773 
# --------------

#%_3196

haut

Capturer une ligne avec choix du pattern et de son occurrence


#!/usr/bin/python

#@_3106y_count_occurrence_choix_pattern_et_occurrence!!rawinput_withopen_count

# printer 1 ligne avec choix du pattern et de son occurrence

wpattern = raw_input("entrer un pattern : ")
woccur = raw_input("entrer une occurrence : ")

# in.txt
# line1 data1
# line2 @ span @ data2
# line3 @ hello data3

print wpattern , type(wpattern)
print woccur , type(woccur)

woccur2 = int(woccur)
print woccur2 , type(woccur2)
print ""

with open("in.txt" , 'r') as f:
    for line in f:
#        print line.strip()
        if line.count(wpattern) == woccur2:
            print line

f.close()
# resultat:
# @ 
# 2 
# 2 

# line2 @ span @ data2
#%_3106

haut

Maitriser le nombre de champs pour chaque ligne


#!/usr/bin/python

#@_3107y_count_nombre_de_champs_pour_chaque_ligne!!withopen_split_while_len_append_join

# in.txt
# abide  @@@  tolerate -  last -  stay
# accept  @@@  receive -  take on -  say yes to -  acknowledge -  stand -  welcome
# access  @@@  admission -  entrance -  attack -  acquire

# nombre d'occurrences :
n = 4
sep = "-"

with open ("in.txt" , 'r') as f1:
    f2 = open ("out.txt" , 'w')     
    for ligne1 in f1:

        n_split_groups = []
        groups = ligne1.split(sep)
        while len(groups):
            n_split_groups.append(sep.join(groups[:n]))
            groups = groups[n:]

        w = (n_split_groups)[0]
        w2 = ''.join((n_split_groups)[0].strip())

        print (n_split_groups)[0].strip()
        f2.write(w2 + "\n")

f1.close()
f2.close()

# resultat
# abide  @@@  tolerate -  last -  stay
# accept  @@@  receive -  take on -  say yes to -  acknowledge
# access  @@@  admission -  entrance -  attack -  acquire
#%_3107

haut

Compter nombre de mots pour chaque ligne (et l'ecrire en bout de ligne)


#!/usr/bin/python

#!/usr/bin/python

import re

#@_3108y_count_nombre_mots_par_ligne!!read_splitlines_len_findall_join_str

# in.txt :
# line612@ generates generating generated
# line613@ gesticulates gesticulating gesticulated
# line614@ getting   gets getting got  gets getting got  gets getting got
# line615@
# line616@ giving   gives giving gave  gives giving gave  gives giving gave

f2 = open("out1.txt" , "w")
f2B = open("out2.txt" , "w")
mylist = open("in.txt").read().splitlines()
for i in mylist:
#    print i

    count = len(re.findall(r'\w+' , i))

    print i , count      # ecrire en fin de ligne le nb de mot de chaque ligne
    v1 = ''.join(i)
    v2 = str(count)
    v3 = v1 + "  " + v2
    v4 = ''.join(v3)
    f2B.write(v4 + "\n")     # ecrire en fin de ligne le nb de mot de chaque ligne

    m = i.split()[:1]   # premiere colonne
    m2 = ''.join(m)
#    print m2        # premiere colonne
    m3 = str(count)
    m4 = m3 + "  " + m2
    m5 = ''.join(m4)
    f2.write(m5 + "\n")

f2.close()
f2B.close()

# resultat :
# line612@ generates generating generated 4
# line613@ gesticulates gesticulating gesticulated 4
# line614@ getting   gets getting got  gets getting got  gets getting got 11
# line615@  1
# line616@ giving   gives giving gave  gives giving gave  gives giving gave 11

#%_3108

haut

Compter occurrences d'un pattern pour chaque ligne - exemple 1


#!/usr/bin/python

#@_3109y_count_nombre_occurrences_d_1_pattern_pour_chaque_ligne!!withopen_split_str_+=

# abide  @@@  tolerate -  last -  stay
# accept  @@@  receive -  take on -  say yes to -  acknowledge -  stand -  welcome
# access  @@@  admission -  entrance -  attack -  acquire

IN="in.txt"
OUT="out.txt"

sep = "-"

count = 1
with open(IN , 'r') as road1:
    fd = open (OUT , "w")     
    for line in road1:
        big = line.split (' ')      # separation par mot
        element = big.count(sep)
        element2 = str(element)
        if element2 != 0:
            print "line " , count , " : " , element2 , " occurrences du pattern : " , sep
            fd.write(element2 + "\n")
            count = count + 1

road1.close()
fd.close()

# resultat
# line  1  :  2  occurrences du pattern :  -
# line  2  :  5  occurrences du pattern :  -
# line  3  :  3  occurrences du pattern :  -
#%_3109

haut

Compter occurrences d'un pattern pour chaque ligne - exemple 2


#!/usr/bin/python

#@_3110y_count_occurrences_d_1_pattern_pour_chaque_ligne!!withopen_len_split_str_join

# 1-in.txt
# abide  @@@  tolerate -  last -  stay
# accept  @@@  receive -  take on -  say yes to -  acknowledge -  stand -  welcome
# access  @@@  admission -  entrance -  attack -  acquire


PATTERN="-"

count = 1
with open ("1-in.txt" , 'r') as f2:
    f3 = open ("out.txt" , 'w')      
    for ligne2 in f2:

        w = len(ligne2.split(PATTERN)) -1

        print "ligne :" , count , ": nb occurrences du pattern :" , PATTERN , ": " , w

        wb = str(w)

        countb = str(count)
        countc = ''.join(countb)

        result1 = "ligne : " , countc , " : nb occurrences du pattern : " , PATTERN , " : " , wb
        result2 = ''.join(result1)
        f3.write(result2 + "\n")

        count+=1

# resultat :
# ligne : 1 : nb occurrences du pattern : - :  2
# ligne : 2 : nb occurrences du pattern : - :  5
# ligne : 3 : nb occurrences du pattern : - :  3

#%_3110

haut

Compter les occurrences de chaque mot d'un fichier : methode 1


#!/usr/bin/python

#@_3111y_count_occurrences_de_chaque_mot_d_1_fichier_methode_1!!read_split_sorted_set_count_str_join_format

# abide  @@@  tolerate -  last -  stay
# accept  @@@  receive -  take on -  say yes to -  acknowledge -  stand -  welcome
# access  @@@  admission -  entrance -  attack -  acquire

words = open ("in.txt", "r").read().split()
uniqWords = sorted(set(words))
fd2 = open ("out.txt" , 'w')     
for word in uniqWords:

    memor = words.count(word)
    memor2 = str(words.count(word))
    memor3 = memor2 , word
    memor4 = '   '.join(memor3)
    print memor4

    fd2.write("{0}\n".format(memor4))
fd2.close()

# resultat
# 10   -
# 3   @@@
# 1   abide
# 1   accept
# 1   access
#%_3111

haut

Compter les occurrences de chaque mot d'un fichier : methode 2


#!/usr/bin/python

#@_3112y_count_occurrences_de_chaque_mot_d_1_fichier_methode_2!!read_split_ifin_+=_str_count_join

START="z-in.txt"

OUT1="z-out1.txt"
OUT2="z-out2.txt"

# START
# @ if the need arises !   @ en cas de besoin !

#####################

# 1/2 : occurrence des mots (sur tout le fichier oubien 1 seule colonne)

word_list = open (START , "r").read().split()
fw1 = open (OUT1 , "w")     

unique_words = []

for word in word_list:
    if word not in unique_words:
        unique_words += [word]

for word in unique_words:

    m1 = str(word_list.count(word)) , word
    m2 = ' '.join(m1)
    fw1.write(m2 + "\n")
fw1.close()

########

# 2/2 : trier
#+_3112_trier_1_liste!!forinopen_sort_key_int_split_reverse

d_list = [ligne.strip() for ligne in open (OUT1)]

fw2 = open (OUT2 , 'w')     

d_list.sort(key = lambda ligne: int(ligne.split(' ')[0]), reverse=True)

for ligne in d_list:
    print ligne
    fw2.write(ligne + "\n")
fw2.close()
#-
# resultat :
# 2 @
# 2 !
# 1 if
# 1 the
# 1 need
# 1 arises
# 1 en
# 1 cas
# 1 de
# 1 besoin
#%_3112

haut

Compter les occurrences de chaque mot d'un fichier : methode 3


#!/usr/bin/python

#@_3113y_count_occurrences_de_chaque_mot_d_1_fichier_methode_3!!forinopen_split_sorted_set_count_join_map_str

# data.txt :
# Tout est bien qui finit bien
# La terre est ronde
# La rue est pleine de monde
# Le monde change vite


w = [word for line in open ("data.txt" , "r") for word in line.split()]
print w
f2 = open ("out.txt" , "w")    

for i in sorted(set(w)):
    w2 = w.count(i) , " : fois le mot : " ,  i
    w3 = str(w2)

#    print w.count(i) , " : occurrences : " ,  i

    w3 = ' '.join(map(str,w2))      # convert tuple to string
    f2.write(w3 + "\n")

f2.close()

##############
# trier

d_list = [line2.strip() for line2 in open ("out.txt")]

f3 = open ("out2.txt", 'w')     

d_list.sort(key = lambda line2: line2, reverse=True)

for line2 in d_list:
    print line2
    f3.write(line2 + "\n")
f3.close()

# resultat :
# 3  : fois le mot :  est
# 2  : fois le mot :  monde
# 2  : fois le mot :  bien
# 2  : fois le mot :  La
# 1  : fois le mot :  vite
# 1  : fois le mot :  terre
#%_3113

haut

Compter les occurrences de chaque mot d'un fichier : methode 4


#!/usr/bin/python

#@_3233y_count_occurrence_de_chaque_mot_d_1_fichier!!read_dict_split_key_val_iteritems_sort

import time

IN="1-in1.txt"
OUT1="1-out-occur1.txt"
OUT2="1-out-occur2.txt"
TIME=2

# IN :
# for split str
# for listdir split str
# for join len read readline with
# for read shutil split startswith while with
# len read readline with
# for join len read readline split str while

# occurrences de chaque mot du fichier

fw1 = open(OUT1 , 'w')
fd = open(IN , 'r')
t = fd.read()
# print t , type(t)     # tout le fichier en 1 'str'

counts = dict()
words = t.split()
# print words , type(words)     # tout le fichier en 1 'list'

for word in words:
#     print word , type(word)      # chaque mot en 'str'

    if word in counts:
        counts[word] += 1
    else:
        counts[word] = 1    

# print counts , type(counts)      # tout le fichier en 'dict'

st = ""
for key, val in counts.iteritems():
    st = st + key + " : " + str(val) + "\n"

# print st , type(st)        # tout le fichier en 1 'str'
fw1.write(st)
fw1.close()

print " ---> ok occurrences de chaque mot ds : " , OUT1
time.sleep(TIME)

#######################

# trier

d_list = [line2.strip() for line2 in open(OUT1)]   # ouvert en liste
f3 = open(OUT2, 'w')         
d_list.sort(key = lambda line2: line2, reverse=False)

for line2 in d_list:
    print line2
    f3.write(line2 + "\n")
f3.close()

print " ---> ok occurrences triees de chaque mot ds : " , OUT2
time.sleep(TIME)

# resultat :
# for : 5
# join : 2
# len : 3
# listdir : 1
# read : 4
# readline : 3
# shutil : 1
# split : 4
# startswith : 1
# str : 3
# while : 2
# with : 3

#%_3233

haut

Indiquer le numero de chaque ligne qui suit un titre


#!/usr/bin/python

#@_3114y_count_numeroter_ligne_qui_suit_1_titre_et_remise_a_zero!!readlines_range_len_startswith_str_flag_+=

# RESULT13 :
# newy-109-accomplish- | transitive verb
# ) accomplir , executer
# ) realiser
# ) effectuer
# ) venir a bout de , mener a bonne fin
# newy-57-accord- | transitive verb
# ) accorder
# ) reserver

fd13 = open (RESULT13).readlines()
fd14 = open (RESULT14 , "w")     

for i in range(len(fd13)):

    if fd13[i].startswith(")"):
        flag = 1
#        print count , fd13[i].strip()
        fd14.write(str(count) + fd13[i])

    if fd13[i].startswith("newy"):
        count = 1
        flag = 0
#        print fd13[i].strip()
        fd14.write(fd13[i])
    if flag:
        count = count + 1

fd14.close()

# resultat :
# newy-109-accomplish- | transitive verb
# 1) accomplir , executer
# 2) realiser
# 3) effectuer
# 4) venir a bout de , mener a bonne fin
# newy-57-accord- | transitive verb
# 1) accorder
# 2) reserver
#%_3114

haut

Cumuler les occurrences d'un pattern d'un fichier et ecrire ce chiffre en fin de ligne


#!/usr/bin/python

#@_3115y_count_cumuler_les_occurrences_d_1_pattern_et_ecrire_ce_chiffre_en_fin_de_ligne!!openr_ifin_count_+=

IN="in.txt"

###########
# exemple de ligne du depart :
# @ write file - % A lookup file operation

count = 0
pattern = "@"

teams = open (IN, 'r')
for line in teams:
    if pattern in line:
        count += 1
        print line.strip() , " @!! " , count-1   # compteur commence a zero
    else:
        print line.strip()

teams.close()

# resultat : nombre d'occurrences du pattern @ :
# @ write file - % A lookup file operation  @!!  245
#%_3115

haut

Indiquer les positions de toutes les occurrences d'un pattern


#!/usr/bin/python

#@_3116y_count_position_pattern_de_chaque_ligne!!readlines_len_withopen_xrange

import re

# BUT : ecrire la position du pattern sur chaque ligne

# 1-in.txt
# abide  @@@  tolerate -  last -  stay
# accept  @@@  receive -  take on -  say yes to -  acknowledge -  stand -  welcome
# access  @@@  admission -  entrance -  attack -  acquire

PATTERN="-"

########################

# nombre de lignes du fichier

f1 = open("in.txt" , 'r').readlines()
linecount = len(f1)
print "---> nb de lignes du fichier : " , linecount
print ""

# script : exemple 1
count = 1
with open ("in.txt" , 'r') as f1:
    for ligne1 in f1:
        w1 = [n for n in xrange(len(ligne1)) if ligne1.find(PATTERN , n) == n]

	print "line : " , count , "/ ", linecount , " : position du pattern sur la ligne : " , w1
	count +=1
f1.close()
print ""

##############

# script : exemple 2
with open ("in.txt" , 'r') as f2:
    for ligne2 in f2:
        w2 = [m.start() for m in re.finditer(PATTERN , ligne2)]

	print "position du pattern sur la ligne :" , w2

f2.close()

# resultat :
# ---> nb de lignes du fichier :  3

# line :  1 /  3  : position du pattern sur la ligne :  [21, 29]
# line :  2 /  3  : position du pattern sur la ligne :  [21, 32, 46, 61, 70]
# line :  3 /  3  : position du pattern sur la ligne :  [23, 35, 45]

# position du pattern sur la ligne : [21, 29]
# position du pattern sur la ligne : [21, 32, 46, 61, 70]
# position du pattern sur la ligne : [23, 35, 45]
#%_3116

haut

Concatener plusieurs listes


#!/usr/bin/python

#@_3201y_concatener_plusieurs_listes!!forinif_range_append_join_readlines

import os

PATH="/python27/tests-2017-09"

# 3-data1.txt :
# line1 data1
# line2 data1

# 3-data2.txt :
# line1 data2
# line2 data2

# 3-data3.txt :
# line1 data3
# line2 data3


# exemple 1/3  (for in if - join - readlines)

list = os.listdir(PATH)
newlist = [ word for word in list if word[:2]=='3-' ]
print newlist        # ['3-data1.txt', '3-data2.txt', '3-data3.txt']

with open('out-concatene.txt' , 'w') as output:
    for IN in newlist:
        print ''.join([line for line in open(IN).readlines() if line.strip()])
        output.write(''.join([line for line in open(IN).readlines() if line.strip()]))
output.close()
########################################

# exemple 2/3 (range - read splitlines - append)

all = []
fw = open("out.txt" , 'w')
for i in range(MIN , MAX):
    mylist = open("in" + str(i) + ".txt").read().splitlines()
    for h in mylist:
        all.append(h)

for g in all:
    print g
    fw.write(g + "\n")
fw.close()
########################################

# exemple 3/3 (for in if - read splitlines - append)

all = []
fw = open("out.txt" , 'w')

newlist = [i for i in os.listdir(PATH) if i[:2] == "in"]
newlist2 = sorted(newlist)

for file1 in newlist2:
    w1 = [
    line1       
    for line1 in open(file1).read().splitlines()    
#    if ....
    ]    

    all.append(line1)
    print '\n'.join(w1)

    w1b = '\n'.join(w1)     
    fw.write(w1b + "\n")
fw.close()

# resultat :
# line1 data1
# line2 data1
# line1 data2
# line2 data2
# line1 data3
# line2 data3

#%_3201

haut

Exemples de syntaxes pour concatener


#!/usr/bin/python

#@_3117y_concatener_exemples_syntaxes!!oslistdir_withopen_join_readlines_read_splitlines

import os
import re


# in1.txt :
# data1 line1
# data1 line2

# in2.txt :
# data2 line1
# data2 line2

# in3.txt :
# data3 line1
# data3 line2

# exemple 1/3 

fw = open("out.txt" , 'w')
i = 1
while i < 4:
    w2 = [j for j in open("in" + str(i) + ".txt").read().splitlines()]
    w2b = '\n'.join(w2)
    print w2b
    fw.write(w2b + "\n")
    i += 1

# resultat :
# data1 line1
# data1 line2
# data2 line1
# data2 line2
# data3 line1
# data3 line2

################################
# exemple 2/3

f1 = open (LIST).read().splitlines()
with open(CONCAT , 'w') as output:       

    for file in f1:          # file sera 1 fichier a concatener
        os.chdir(PATHOFFILES)

        output.write(''.join([line for line in open (file).readlines()]))
output.close()

################################
# exemple 3/3

file_list = []

for file in [ doc for doc in os.listdir(PATH)
f2 = open (RESULT , "w")     

if doc.endswith(PATTERN1)
or doc.endswith(PATTERN3) ]:    # attention au crochet fermant ]
    file_list.append(file)    # creation de la liste de fichiers a concatener

for i in file_list:
    os.chdir(PATHY)
    fr = open (i, 'r')
    line = fr.readline()   # lecture ligne par ligne

    count = 1
    while line:       # boucle sur les lignes

#        print i , " : " , str(count) , " _ " , line.strip()
        w = i , " : " , str(count) , " _ " , line.strip()
        os.chdir(PATH)
        f2.write(''.join(w) + "\n")     # ecriture de la concatenation

        line = fr.readline()
        count = count + 1

f1.close()
f2.close()

#%_3117

haut

Concatener 2 fichiers (read)


#!/usr/bin/python

#@_3119y_concatener_2_inplusieursfichiers!!withopen_read

lettre="a"

file1="inter3-" + lettre + ".txt"
file2="inter4-" + lettre + ".txt"

filenames = [file1 , file2]    # liste

with open("out.txt" , "w") as fw:      
    for fname in filenames:
        with open(fname) as concat:
            fw.write(concat.read())
fw.close()
concat.close()
#%_3119

haut

Concatener une serie avec listdir - exemple 1


#!/usr/bin/python

#@_3120y_concatener_chiffres_inplusieursfichiers!!forinif_listdir_readline_while_join

import os
import re

PATHHOME="/Python27/tests-2017-11"

# x-1.txt :
# 3
# 15

# x-2.txt
# 8
# 34


f2 = open ("out-3120.txt" , "w")    

newlist = [i for i in os.listdir(PATHHOME) if i[0:2] == "x-"]   

for file in newlist:
    fr = open (file, 'r')                 
    
    line = fr.readline()         # lecture ligne par ligne
    count = 1
    while line:               # boucle sur les lignes

        w = file , " : " , line.strip()
        w2 = ''.join(w)
        print w2
        
        f2.write(w2 + "\n")     # ecriture de la concatenation
        line = fr.readline()

f2.close()

# resultat :
# x-1.txt : 3
# x-1.txt : 15
# x-2.txt : 8
# x-2.txt : 34

#%_3120

haut

Concatener une serie avec listdir - exemple 2


#!/usr/bin/python

#@_3121y_concatener_inplusieursfichiers_marquer_devant_lignes!!forinif_readline_while_str_join

import os
import re

PATHHOME="/Python27/tests-2017-11"

# file1.txt :       
# line1
# line2

# file2.txt :
# line1b
# line2b

f2 = open ("out-3121.txt" , "w")    

newlist = [i for i in os.listdir(PATHHOME) if i[0:4] == "file"]   # i[-4:] == ".txt"

for file in newlist:
    fr = open (file, 'r')                 
    
    line = fr.readline()   # lecture ligne par ligne
    count = 1
    while line:       # boucle sur les lignes

        w = file , " : " , str(count) , " _ " , line.strip()
        w2 = ''.join(w)
        print w2
        
        f2.write(w2 + "\n")     # ecriture de la concatenation
        line = fr.readline()
        count = count + 1
f2.close()

# resultat :
# file1.txt : 1 _ line1
# file1.txt : 2 _ line2
# file2.txt : 1 _ line1b
# file2.txt : 2 _ line2b

#%_3121

haut

Concatener une serie de fichiers en retirant des lignes si elles contiennent des patterns specifiques


#!/usr/bin/python

#@_3122y_concatener_inplusieursfichiers_sauf_patterns!!read_splitlines_join_readlines_forinopen_ifin_isspace

import sys
import os
import re

LISTEUWXY="liste-uwxy.txt"
CONCAT="resultat.txt"
PATHUWXY="/path-of-files"

# contenu d'un fichier de LISTEUWXY : uwxy-access.txt :

# !!!! access [sth] - vtr - (reach, get into: a place) - (endroit) - acceder a - vtr ind
#
# @@ In order to access the computer room, students have to use a special swipe card.
# !!!! access management - n - (computing: login system) - (informatique) - gestion des droits d'acces
# !!!! disabled access - (entry for wheelchair users) - acces pour handicapes - nm
#
# @@ My church has finally installed both an elevator and a ramp to provide disabled access.


# ouvrir en liste le fichier contenant les fichiers a concatener

f1 = open (LISTEUWXY).read().splitlines()

# concatener la selection de fichiers

# noter que :    not line.isspace()   n'ecrit pas les lignes vides

with open(CONCAT , 'w') as output2:       

    for file in f1:          # file sera 1 fichier a concatener
        os.chdir(PATHUWXY)

        output2.write(' '.join([line for line in open (file).readlines() \
        if "- n -" not in line.strip() \
        and " npl" not in line.strip() \
        and " nm" not in line.strip() \
        and not line.isspace()]))

output2.close()

# resultat :
# !!!! access [sth] - vtr - (reach, get into: a place) - (endroit) - acceder a - vtr ind
# @@ In order to access the computer room, students have to use a special swipe card.
# @@ My church has finally installed both an elevator and a ramp to provide disabled access.
#%_3122

haut

Concatener une serie de fichiers (avec numerotation des lignes)


#!/usr/bin/python

#@_3123y_concatener_inplusieursfichiers_en_numerotant_lignes!!oslistdir_endswith_append_readline_while_str_join_+=

import sys, os
import time

PATH="/Users/JT/Desktop/1-py-9-15"

PATTERN1=".txt"
PATTERN2=".py"
PATTERN3=".some-extension"

RESULT="out.txt"

TIME=0

########

file_list = []

for file in [ doc for doc in os.listdir(PATH)
f2 = open (RESULT , "w")     

if doc.endswith(PATTERN1)
or doc.endswith(PATTERN2)
or doc.endswith(PATTERN3) ]:    # attention au crochet fermant ]
    file_list.append(file)

for i in file_list:
    print i
    os.chdir(PATH)
    f = open (i, 'r')
    line = f.readline()
    count = 1
    while line:

        print i , " : " , str(count) , " _ " , line.strip()
        w = i , " : " , str(count) , " _ " , line.strip()
        f2.write(''.join(w) + "\n")

        line = f.readline()
        count = count + 1
        time.sleep(TIME)
f2.close()

# resultat :
# data.txt
# data.txt  :  1  _  she got herself into a terrible state   elle s'est mis dans tous ses etats
# data.txt  :  2  _  he got them into a lot of trouble   il leur a attire de gros ennuis
# data2.txt
# data2.txt  :  1  _  she got herself into a terrible state
# data2.txt  :  2  _  can I get a coffee? (US)
# in.txt
# in.txt  :  1  _  she plans to attempt the record again
# in.txt  :  2  _  his aim is to get rich
# toto1.sh  :  1  _  data1
# toto1.sh  :  2  _  data2
#%_3123

haut

XARGS : Rechercher une syntaxe dans des sous repertoires (ouverture en liste) : exemple complet 1


#!/usr/bin/python

#@_3234y_xargs_chercher_pattern_ds_1_fichier!!rawinput_split_endswith_join

import os
import re

# fichier entree : IN   provient d'1 scan du script suivant :
#      /nfs/u/0-0-05-SCAN-SEARCH-XARGS/0-0-001-A-SCAN-NB-LINES-XARGS.py
#    de la forme :   (col1 = nb de lignes du fichier)   (col2 = chemin des fichiers scannes)  (col3 = pas utile ici)

# 091956 /nfs/u/0-0-04-WR-FRdef/1-0-WR-FR-@DIC@-8-21.txt 85071
# 076392 /nfs/u/tests-2017-10/result-with-out-yield.txt 84229
# ^^col1    ^^col2                                      ^^col3


IN="1-0-result-xargs-READY-2-for-search.txt"       # <--- fichier entree

NEW1="1-ready-files.txt"
NEW2="1-ready-files2.txt"

LIMITMIN="000010"      # limite du nombre de lignes
LIMITMAX="001000"

PATTERN = raw_input("entrer un mot cle : ")

print PATTERN

regex = ["old" , "OLD"]

EXTENSION=".py"

##########################

# habillage : capture colonnes 1 et 2

fw1 = open(NEW1 , 'w')
f1 = open(IN , 'r')

for line1 in f1:
    col0 = line1.split()[0]
    col1 = line1.split()[1]

    if col0 > LIMITMIN and col0 < LIMITMAX:
        z = col1
        z2 = ''.join(z)
        fw1.write(z2 + "\n")
    
fw1.close()

#################################

# capture du PATTERN dans les lignes des fichiers

f3 = open(NEW2 , 'w')
f4 = open(NEW1 , 'r')
for file4 in f4:
    file4 = file4.strip()
    if file4.endswith(EXTENSION) and not any(i in file4 for i in regex):

        f5 = open(file4 , 'r')
        for line5 in f5:
            if PATTERN in line5:
                z = file4 , " @@@ " , line5
                z2 = ''.join(z)
                print z2.strip()
                f3.write(z2)
            if not PATTERN in line5:
                continue
f3.close()

##########################

# nb lignes de NEW2

print "---------------------"
linecount = len(open(NEW2 , 'r').readlines())
print "pattern = " , PATTERN , " ;  nb lignes du fichier : " , NEW2 , " : " , linecount

#%_3234

haut

XARGS : Rechercher une syntaxe dans des sous repertoires (ouverture en liste) : exemple complet 2


#!/usr/bin/python

#@_3207y_capture_syntaxe_dans_fichiers_directories_sub-directories!!rawinput_splitlines_oswalk_len_readlines_ifany_join

import os
import re

PATH="/Python27/tests-2017-09"

# equivalent de  xargs

# verifier le contenu de ce fichier : (par defaut fichier vide)
BADWORDS="1-bad_words.txt"      #contenant des patterns a supprimer dans les lignes

GOODWORDS="1-0-good_words.txt"     # contenant des patterns a capturer

OUT="1-0-result-choix-nb-lines.txt"

PATTERNFPATH = raw_input("1/4_Rechercher un pattern ds les fpath (noms des fichiers) - (exemple : py) : ")  
NOTPATTERNFPATH = raw_input("2/4_Retirer un pattern ds les fpath ('blanc' si rien a retirer) : ")  

# selection d'1 seul pattern qu'on veut dans les lignes
PATTERNLINE = raw_input("3/4_Rechercher un pattern ds les lignes ('blanc' si rien a retirer) : ")  

NBLINESFILES = raw_input("4/4_indiquer limite sup nb lines des fichiers (1 chiffre - pas de blanc) : ")
new = int(NBLINESFILES)

print "mot recherche ds les fpath: " , PATTERNFPATH
print "mot retire des fpath : " , NOTPATTERNFPATH
print "mot recherche dans les lignes: " , PATTERNLINE
print "limite nb lines in files : " , new

print "------------------------------------"
print ""

fz1 = open(OUT , 'w')

bad_words = open(BADWORDS).read().splitlines()
good_words = open(GOODWORDS).read().splitlines()

count=1

for dname, dirs, file1 in os.walk(PATH):
    for fname in file1:
        fpath = os.path.join(dname, fname)

# traitement des fpath
        m1 = len(open(fpath , 'r').readlines())

	if m1 < new and PATTERNFPATH in fpath and not NOTPATTERNFPATH in fpath:

# traitement des lignes
	    w1 = [            # ouverture en liste
	    line1
	    for line1 in open(fpath)           
	    if PATTERNLINE in line1          # selection d'1 seul pattern (manuel - blanc si rien)
            if not any(bad_word in line1 for bad_word in bad_words)    
#	    if any(good_word in line1 for good_word in good_words)      # attention si actif : fichier GOODWORDS doit contenir des patterns
	    ]

	    print "@@@@### " , m1 , " @@@@ " , fpath  , " @@@@ " , count , " @@@@\n" , ''.join(w1)
	    p1 = "@@@@### " , str(m1) , " @@@@ " , fpath  , " @@@@ " , str(count) , " @@@@\n" , ''.join(w1)
	    p2 = ''.join(p1)
	    fz1.write(p2)
	    count+=1

fz1.close()

# resultat :
# 1/4_Rechercher un pattern ds les fpath (noms des fichiers) : py
# 2/4_Retirer un pattern ds les fpath (noms des fichiers) : color
# 3/4_Rechercher un pattern ds les lignes : split
# 4/4_indiquer limite sup nb lines des fichiers : 100

# @@@@###  82  @@@@  /Python27/tests-2017-09\0-1-3022-OK.py  @@@@  1  @@@@
#         w = line.split()[3]           # variable memorisee

# @@@@###  72  @@@@  /Python27/tests-2017-09\0-1-3074-OK.py  @@@@  2  @@@@
 
# @@@@###  84  @@@@  /Python27/tests-2017-09\0-1-while1-carcasse-1.py  @@@@  3  @@@@
#         w = line.split()[3]           # variable memorisee
#         line2 = line.split()[3] , line         # modifier la syntaxe ligne contenant le pattern

#%_3207

haut

XARGS : Rechercher une syntaxe dans des sous repertoires (ouverture en string) : exemple court 2


#!/usr/bin/python

#@_3124y_capture_syntaxe_dans_fichiers_directories_sub-directories!!oswalk_ospath_withopen_ifin


import os

# BUT : rechercher une syntaxe dans des fichiers pouvant etre dans des directories et sub directories
# equivalent de  xargs

SEARCH="activate"    # syntaxe recherchee

PATH="/Python27"

for dname, dirs, files in os.walk(PATH):
    for fname in files:
        fpath = os.path.join(dname, fname)
        with open(fpath) as f:        # ouverture en string
            for line in f:
                # retirer de la recherche des fichiers mal formates
                if not "1-ascii-1.txt" in fpath and not "1-ascii-6.txt" in fpath:
		    if SEARCH in line:
		        print fpath , " @@@ " , line.strip()

# resultat :
# /Python27\0-0-1-LAROUSSE\1-0-data-crochets-LAR-2.txt  @@@  @ activate
# /Python27\0-0-1-LAROUSSE\1-0-data-crochets-LAR-2.txt  @@@  3.	 ( become activated  bomb )     exploser
# /Python27\0-0-1-LAROUSSE\1-0-data-crochets-LAR-2.txt  @@@  7.	 ( activate  switch ,  lever ,  clutch )     actionner
# /Python27\0-0-1-LAROUSSE\1-0-data-crochets-LAR-3.txt  @@@  @ activate

#%_3124

haut

Rechercher une syntaxe dans des fichiers


#!/usr/bin/python

#@_3125y_capture_syntaxe_dans_fichiers!!glob_openr_read_ifin_name

import glob

SEARCH="activate"

for files in glob.glob( "*.txt" ):
    f = open( files, 'r' )
    file_contents = f.read()
    if SEARCH in file_contents:
            print f.name       # 'name' donne le nom du fichier
f.close()

# resultat :
# 1-0-data-crochets-LAR-2.txt
# 1-0-data-crochets-LAR-3.txt
# 1-0-data-crochets-LAR-4.txt
# 1-0-data-larousse-10-26-converti.txt

#%_3125

haut

Deleter le repertoire s'il existe ; creer le repertoire s'il n'existe pas


#!/usr/bin/python

#@_3126y_creer_repertoire_et_deleter_repertoire!!ospathexists_shutil_osmakedirs

import os
import shutil
import time

PATHZ="/Python27/0-0-7-FROM-SITE/Z-"

# deleter le repertoire s'il existe

# check if folder exists
if os.path.exists(PATHZ):
# remove if exists
    shutil.rmtree(PATHZ)  # will delete a directory and all its contents

print " --> ok repertoire  PATHZ  delete"
time.sleep(TIME)

######

# creer le repertoire s'il n'exite pas

if not os.path.exists(PATHZ):
    os.makedirs(PATHZ)

print " --> ok repertoire  PATHZ  cree"
time.sleep(TIME)

#%_3126

haut

Ajouter des digits "0" devant des chiffres pour qu'ils aient tous la meme longueur


#!/usr/bin/python

#@_3127y_ajouter_0_devant_chiffres_pour_1_meme_longueur!!withopen_split_len_join

import os
import sys
import re

# FREQ2
# 5  : data1 line1
# 13  : data2 line2
# 513  : data2 line2

with open(FREQ2 , "r") as fww:
    fd4b = open (FREQ3 , "w")     
    for line3b in fww:
        b = line3b.split("  :")[0]
        c = line3b.split("  :")[1].strip()
        if len(b) == 1:
#            print "000" + ''.join(b) + " " + c
            fd4b.write("000" + ''.join(b) + " " + c + "\n")

        if len(b) == 2:
#            print "00" + ''.join(b) + " " + c
            fd4b.write("00" + ''.join(b) + " " + c + "\n")

        if len(b) == 3:
#            print "0" + ''.join(b) + " " + c
            fd4b.write("0" + ''.join(b) + " " + c + "\n")

fww.close()
fd4b.close()

# resultat
# 0005  : data1 line1
# 0013  : data2 line2
# 0513  : data2 line2
#%_3127

haut

Marquer des lignes pour les joindre ensuite


#!/usr/bin/python

#@_3128y_joindre_lignes_apres_marquage!!readlines_range_len_split_enumerate_startswith

import re

IN1="in1.txt"
IN2="in2.txt"

OUT1="out1.txt"
OUT2="out2.txt"

# IN1 :
# we'll have to accept whatever the panel says
# nous devons accepter quoi que dise le panneau
# traduction automatique de Google
# I got your invitation but I'm unable to accept
# Je ai recu votre invitation, mais je suis incapable d'accepter
# traduction automatique de Google

# ajouter des lignes a la fin

open (IN2 , "w").write( open (IN1).read() + "end\nend\n")

######################

# marquer des lignes en utilisant le repere : "traduction automatique de Google"

fd30 = open (IN2 , 'r').readlines()
fd31 = open (OUT1 , "w")     

for i in range(len(fd30)):

    element1 = fd30[i]
    element2 = fd30[i+1]
    element3 = fd30[i+2].split("de Google")[0]
    if element3 == "traduction automatique ":
        w = element1 , "@ " , element2
        w2 = ''.join(w)
	print element1 , "@ " , element2
        fd31.write(w2)
    if element2.startswith("end"):
        break

fd31.close()

###################

# joindre 2 lignes consecutives

f = open (OUT1).read().split("\n")
fw = open (OUT2 , "w")      

for i,line in enumerate(f):
    if line.startswith("@"):
        h = f[i -1] + " " +line
        print h
        fw.write(h + "\n")
fw.close()

# resultat :
# we'll have to accept whatever the panel says @ nous devons accepter quoique dise le panneau
# I got your invitation but I'm unable to accept @ J' ai recu votre invitation, mais je suis incapable d'accepter
#%_3128

haut

Chaque ligne est en STRING


#!/usr/bin/python

#@_3129y_lire_chaque_ligne_est_en_STRING!!voir_x

#+_3129_lire_chaque_ligne_est_en_STRING!!while_readline_break

IN="in.txt"
fd = open (IN , 'r')
while 1:
    line = fd.readline()
    if not line:
        break

    print line.strip() , type(line)

fd.close()
#-
# she plans to attempt the record again <type 'str'>
# his aim is to get rich <type 'str'>

###################################

#+_3129_lire_chaque_ligne_est_en_STRING!!read_splitlines

mylist = open (IN).read().splitlines()
for i in mylist:
    print i , type(line)
#-
# she plans to attempt the record again <type 'str'>
# his aim is to get rich <type 'str'>

###################################

print

#+_3129_lire_chaque_ligne_est_en_STRING!!withopen

with open(IN , 'r') as f:
    for i in f:
        print i.strip() , type(line)
f.close()
#-
# she plans to attempt the record again <type 'str'>
# his aim is to get rich <type 'str'>

###################################

#+_3129_lire_chaque_ligne_est_en_STRING!!forinopen

d_list = [line.strip() for line in open (IN)]
for line in d_list:
    print line , type(line)
#-
# she plans to attempt the record again <type 'str'>
# his aim is to get rich <type 'str'>

###################################

print

#+_3129_lire_chaque_ligne_est_en_STRING!!openr_readlines_str

f = open (IN,"r")
for line in f.readlines():
    line = str(line).rstrip()
    print line , type(line)

f.close()
#-
# she plans to attempt the record again <type 'str'>
# his aim is to get rich <type 'str'>

###################################

#+_3129_lire_chaque_ligne_est_en_STRING!!readline_while_readline

f = open (IN,"r")
line = f.readline()
while line:
    print line.strip() , type(line)
    line = f.readline()

f.close()
#-
# she plans to attempt the record again <type 'str'>
# his aim is to get rich <type 'str'>

###################################

#+_3129_lire_chaque_ligne_est_en_STRING!!withopen_read_splitlines

with open (IN , "r") as f:
    my_list = f.read().splitlines()
#    print my_list , type(my_list)    # <type 'list'>

    for line in my_list:
        print line , type(line)

f.close()
#-
# she plans to attempt the record again <type 'str'>
# his aim is to get rich <type 'str'>

###################################

#+_3129_lire_chaque_ligne_est_en_STRING!!fileinput

import fileinput

# the fileinput.input() call reads lines sequentially,
# but doesn't keep them in memory after they've been read.

for line in fileinput.input([IN]):
    print line.strip() , type(line)
#-
# she plans to attempt the record again <type 'str'>
# his aim is to get rich <type 'str'>
#%_3129

haut

Chaque mot est en STRING


#!/usr/bin/python

#@_3130y_lire_chaque_mot_est_en_STRING!!voir_x

IN="in.txt"

#+_3130_lire_fichier_decoupe_1_mot_par_ligne!!withopen_split

with open(IN , 'r') as f:
    for line in f:
        for word in line.split():
            print word , type(word)
f.close()
#-
# she <type 'str'>
# plans <type 'str'>
# to <type 'str'>
# attempt <type 'str'>
# the <type 'str'>
# record <type 'str'>
# again <type 'str'>
# his <type 'str'>
# aim <type 'str'>
# is <type 'str'>
# to <type 'str'>
# get <type 'str'>
# rich <type 'str'>

#####################################

#+_3130_lire_fichier_decoupe_1_mot_par_ligne!!openr_read_split

f = open (IN , 'r')
for word in f.read().split():
    print word , type(word)
#-
# she <type 'str'>
# plans <type 'str'>
# to <type 'str'>
# attempt <type 'str'>
# the <type 'str'>
# record <type 'str'>
# again <type 'str'>
# his <type 'str'>
# aim <type 'str'>
# is <type 'str'>
# to <type 'str'>
# get <type 'str'>
# rich <type 'str'>
#%_3130

haut

Une STRING contenant des lignes


#!/usr/bin/python

#@_3131y_lire_tout_le_fichier_en_une_STRING!!openr_read

IN="in.txt"

fd = open (IN , 'r')
t = fd.read()
print t , type(t)

# she plans to attempt the record again
# his aim is to get rich      <type 'str'>
#%_3131

haut

Une STRING contenant des mots


#!/usr/bin/python

#@_3132y_lire_fichier_mot_par_mot!!forinopen_split

IN="in.txt"

#+_3132_lire_fichier_mot_par_mot!!forinopen_split_join

w = [word for line in open (IN , 'r') for word in line.split()]
w2 = '\n'.join(w)
print w2 , type(w2)
#-
# she
# plans
# to
# attempt
# the
# record
# again
# his
# aim
# is
# to
# get
# rich   <type 'str'>
#%_3132

haut

Chaque ligne est en LISTE


#!/usr/bin/python

#@_3133y_lire_chaque_ligne_est_en_LISTE!!openr_split

IN="in.txt"

for line in open (IN):
    line = line.split()
    print line , type(line)

# ['she', 'plans', 'to', 'attempt', 'the', 'record', 'again']  <type 'list'>
# ['his', 'aim', 'is', 'to', 'get', 'rich']  <type 'list'>

#%_3133

haut

Une LISTE contient toutes les lignes


#!/usr/bin/python

#@_3134y_lire_une_LISTE_contient_toutes_les_lignes!!voir_x

IN="in.txt"

#+_3134_lire_une_LISTE_contient_toutes_les_lignes_exemple_1!!read_splitlines

mylist = open (IN).read().splitlines()
print mylist , type(mylist)
#-
# ['she plans to attempt the record again', 'his aim is to get rich'] <type 'list'>

#################################

#+_3134_lire_une_LISTE_contient_toutes_les_lignes_exemple_2!!forinopen

d_liste = [line.strip() for line in open (IN)]
print d_liste , type(d_liste)
#-
# ['she plans to attempt the record again', 'his aim is to get rich'] <type 'list'>
#%_3134

haut

Une LISTE contenant des mots


#!/usr/bin/python

#@_3135y_lire_une_LISTE_contient_tous_les_mots!!voir_x

IN="in.txt"

#+_3135_lire_une_LISTE_contient_tous_les_mots_exemple_1!!forinopen_split

w = [word for line in open (IN , 'r') for word in line.split()]
print w , type(w)
#-
# ['she', 'plans', 'to', 'attempt', 'the', 'record', 'again', 'his', 'aim', 'is', 'to', 'get', 'rich']    <type 'list'>

#####################################

#+_3135_lire_une_LISTE_contient_tous_les_mots_exemple_2!!openr_read_string_split

import string

f = open (IN)
t = f.read()
print string.split(t) , type(string.split(t))
#-
# ['she', 'plans', 'to', 'attempt', 'the', 'record', 'again', 'his', 'aim', 'is', 'to', 'get', 'rich']  <type 'list'>
#%_3135

haut

XARGS : Rechercher un pattern dans plusieurs fichiers : exemple court 1


#!/usr/bin/python

#@_3205y_xargs_chercher_pattern_ds_inplusieursfichiers!!rawinput_forinif_sorted_oschdir

import os
import re

PATH="/Python27/tests-2017-09"     

# exemple ici  : break
PATTERN = raw_input("Rechercher un pattern ds le repertoire PATH : ")  

newlist = [i for i in os.listdir(PATH) if ("." in i and not "color" in i)]

newlist2 = sorted(newlist)

count=1
for file1 in newlist2:
    os.chdir(PATH)

    w1 = [
    line1
    for line1 in open(file1)           
    if PATTERN in line1
    ]

    print "@@@@### " , count , " @@@@ " , file1 , " @@@@\n" , ''.join(w1)
    count+=1

print "resultat de la recherche de : " , PATTERN , "   ; ds le rep : " , PATH

# resultat : 
# @@@@###  247  @@@@  x-part3151.txt  @@@@
# 3151 # 1          @ break - % Print last instance of file
# 3151 # @ break - % Print last instance of file - @!! 1

#%_3205

haut

Si un pattern d'1 fichier existe ds la colonne 1 d'1 autre fichier, substituer sa correspondance en colonne 2


#!/usr/bin/python

#@_3136y_coller_correspondance_d_1_colonne_avec_2_fichiers!!openr_split

#    in.txt :
# attempt
# attempt
# attend
# avail
# bring

#    start.txt :
# attempt attempts
# attend attends
# avail avails
# avert averts


f2 = open("in.txt" , 'r')
for line2 in f2:
    line2 = line2.strip()
#    print (line2)

    for linecor in open("start.txt" , 'r'):

        k1 = linecor.split()[0]
        k2 = linecor.split()[1]

        if line2 == k1:
            print (k2)

#    resultat :  ajout d'un 's' dans les lignes de in.txt
#    noter que 'bring' n'est pas dans   start.txt  donc n'est pas dans le resultat
# attempts
# attempts
# attends
# avails

#%_3136

haut

Chercher si les strings d'un gros fichier existent dans une liste


#!/usr/bin/python

#@_3137y_capture_vlookup_elements_gros_fichier_existent_dans_petite_liste!!read_split_ifin_join

# BUT :
# check if strings from a big file are present in a small list   ('ok' or '-')
# or how to know if strings exist in a list

# big_file  :  z-in.txt  (strings)
# accelerator
# accented
# accentuate
# accept
# acceptable
# access
# accident
# accidentally
# accidents
# accommodate
# accommodation

# small_list  :  z-liste.txt   (only one list)
# ['abide', 'accept', 'access', 'accommodate', 'accomplish', 'accord']

#######

big_file = open ("z-in.txt").read().split()

fw = open ("z-out.txt" , 'w')     

small_list = open ("z-liste.txt").read().split()
print type(small_list)       # <type 'list'>

for string in big_file:
#    print type(string)        # <type 'str'>

    if string in small_list:
        m1 = string , " : ok"    # if string exists in small_list : print 'ok'
        m1b = ' '.join(m1)
        print m1b
        fw.write(m1b + "\n")

    if string not in small_list:
        m2 = string , " : -"    # if string doesn't exists in small_list : print '-'
        m2b = ' '.join(m2)
        print m2b
        fw.write(m2b + "\n")

fw.close()

# resultat   (z-out.txt) :
# accelerator  : -
# accented  : -
# accentuate  : -
# accept  : ok       # <--- 'ok' string exists in the list
# acceptable  : -
# access  : ok       # <--- 'ok' string exists in the list
# accident  : -
# accidentally  : -
# accidents  : -
# accommodate  : ok     # <--- 'ok' string exists in the list
# accommodation  : -
#%_3137

haut

Une ligne est ecrite si un pattern dans une colonne correspond a un element dans un autre fichier


#!/usr/bin/python

#@_3138y_capture_ligne_si_mot_dans_fichier_est_contenu_dans_lignes_autre_fichier!!read_split_readlines_split

import os
import sys

# in.txt :
# applying a function or
# approaching or entering
# approaching exemple we raised
# approving attitude good will
# arguing until I arrived
# arising from my actions
# arising in the imagination
# arising out of land

# z.txt :
# aboard
# about
# above
# from
# in
# out
# until


prepo = open ("z.txt").read().split()

ff = open ("in.txt" , 'r')
f3 = open ("out.txt" , 'w')     
tf = ff.readlines()

for j in prepo:
    print j
    for text2 in tf:

        z1 = text2.split(" ")[1].strip()

        if j == z1:
            print text2.strip()
            f3.write(text2)

ff.close()
f3.close()

# resultat :
# arguing until I arrived
# arising from my actions
# arising in the imagination
# arising out of land
#%_3138

haut

Des patterns d'une liste deviennent des noms de fichiers vides


#!/usr/bin/python

#@_3139y_creer_fichiers_vides_en_lisant_1_liste!!ospath_exists_osmakedirs_openr

import os

# BUT : creer un repertoire qui contiendra des fichiers vides

PATHTOUCH="/Python27/0-0-3-WR-UKdef/TOUCH"

# in.txt :
# abandon
# absorb
# abstain
# abstract

#+_3139_creer_repertoire_si_n_existe_pas!!ospath_exists_makedirs
if not os.path.exists(PATHTOUCH):
    os.makedirs(PATHTOUCH)
#-
# ouvrir le fichier contenant les noms des fichiers vides
f = open ("in.txt" , "r")
for i in f:
    i = i.strip()
    os.chdir(PATHTOUCH)
    with open("z-" + i + ".txt" , "w") as fw:    

        fw.write("")
f.close()
fw.close()

# resultat  dans le repertoire TOUCH :
# creation de 4 fichiers vides :

# z-abandon.txt
# z-absorb.txt
# z-abstain.txt
# z-abstract.txt
#%_3139

haut

Numeroter les lignes d'un fichier


#!/usr/bin/python

#@_3140y_count_numeroter_lignes_d_1_fichier!!openr_readline_while_str_+=

import time

IN="data2.txt"
# she got herself into a terrible state
# can I get a coffee? (US)
# I got a lot from OR out of my trip to China
# he didn't get a chance to introduce himself

TIME=1

count = 1
f = open (IN,"r")
line = f.readline()

while line:
    print str(count) , " _ " , line.strip()

    line = f.readline()
    count = count + 1
    time.sleep(TIME)

f.close()

# resultat :
# 1  _  she got herself into a terrible state
# 2  _  can I get a coffee? (US)
# 3  _  I got a lot from OR out of my trip to China
# 4  _  he didn't get a chance to introduce himself
#%_3140

haut

Pour numeroter les lignes de plusieurs fichiers (avec concatenation)


#!/usr/bin/python

#@_3141y_count_numeroter_lignes_inplusieursfichiers!!oslistdir_endswith_append_readline_while_str_join_+=

import sys, os
import time

PATH="/Users/JT/Desktop/1-py-9-15"

PATTERN1=".txt"
PATTERN2=".py"
PATTERN3=".some-extension"

RESULT="out.txt"

TIME=0

########

file_list = []

for file in [doc for doc in os.listdir(PATH)     # attention au crochet fermant
f2 = open (RESULT , "w")     

if doc.endswith(PATTERN1)
or doc.endswith(PATTERN2)
or doc.endswith(PATTERN3)]:    # attention au crochet fermant ici
    file_list.append(file)

for i in file_list:
    print i
    os.chdir(PATH)
    f = open (i, 'r')
    line = f.readline()
    count = 1
    while line:

        print i , " : " , str(count) , " _ " , line.strip()
        w = i , " : " , str(count) , " _ " , line.strip()
        f2.write(''.join(w) + "\n")

        line = f.readline()
        count = count + 1
        time.sleep(TIME)
f2.close()
# resultat :
# data.txt
# data.txt  :  1  _  she got herself into a terrible state   elle s'est mis dans tous ses etats
# data.txt  :  2  _  he got them into a lot of trouble   il leur a attire de gros ennuis
# data2.txt
# data2.txt  :  1  _  she got herself into a terrible state
# data2.txt  :  2  _  can I get a coffee? (US)
# in.txt
# in.txt  :  1  _  she plans to attempt the record again
# in.txt  :  2  _  his aim is to get rich
# toto1.sh  :  1  _  data1
# toto1.sh  :  2  _  data2
#%_3141

haut

Modifier une syntaxe avec SUB - exemple 1


#!/usr/bin/python

#@_3142y_modifier_avec_sub_derniere_occurrence_pattern!!openr_sub

import re

IN="1-sub1.txt"
OUT="1-out.txt"

# IN :
# %data1/login/larousse/file1.txt
# @data2/login/collins/file2.txt


f1 = open(IN , 'r')
fw = open(OUT , "w")

for line in f1:
    line = re.sub(r'(.*)/' , r'\1 @ ' , line)
    print line.strip()
    fw.write(line)

fw.close()

# resultat
# %data1/login/larousse @ file1.txt
# @data2/login/collins @ file2.txt

#%_3142

haut

Modifier une syntaxe avec SUB - exemple 2


#!/usr/bin/python

#@_3222y_deleter_groupes_de_mots!!oslistdir_forinif_sub

import os
import re

PATHHOME="/Python27/tests-2017-10"

# uyz-1.txt
# Missfire SP 2233 , 4365
# SP Timing error 5ms data1
# autofire SP 4512 , 5227
# disabled field shot 2325
# ------------- SP

# uyz-2.txt
# disabled data1 SP 4431
# autofire Tmg error 7ms SP3379
# disabled SP 2325 SP 4512 , 5227
# missfire SP 2233 , 4365


newlist = [i for i in os.listdir(PATHHOME) if i[0:3] == "uyz"]
newlist2 = sorted(newlist)
fz1 = open("out-3085.txt" , 'w')

for file1 in newlist2:
    w1 = [
    line1
    for line1 in open(file1)          
    if "SP" in line1 or "shot" in line1 or "autofire" in line1
    ]
    w1b = ''.join(w1)     

    w1c = re.sub('Timing.*?ms|Tmg.*?ms|dis.*?ed|f.*?d' , '' , w1b)    

    print w1c
    fz1.write(w1c)

fz1.close()


# resultat :
# Missfire SP 2233 , 4365
# SP  data1
# autofire SP 4512 , 5227
#   shot 2325
# ------------- SP
#  data1 SP 4431
# autofire  SP3379
#  SP 2325 SP 4512 , 5227
# missfire SP 2233 , 4365

#%_3222

haut

Verifier si les elements d'une petite liste sont contenus dans une grande liste (vlookup) exemple1


#!/usr/bin/python

#@_3144y_capture_vlookup_elements_petite_liste_contenus_dans_grande_liste!!read_split_range_len_join

BIG="1-count.txt"
SMALL="1-in.txt"
RESULT1="1-result.txt"

# BIG
# 1934P1530
# 1936I1532
# 1952P1534

# SMALL
# 1936I1532 Thu-Aug-4
# 1934P1530 Thu-Aug-4

small_file = open (SMALL).read().split()

big_file = [line1.strip() for line1 in open(BIG)]

fw1 = open(RESULT1 , 'w')            

for i in range(len(big_file)):
    w = ' '.join(line2.strip() for line2 in small_file)

    if big_file[i] in w:
        print big_file[i] , "1"
        y = big_file[i] , "1"
        y2 = ' '.join(y)
        fw1.write(y2 + "\n")

    if not big_file[i] in w:
        print big_file[i] , "0"
        z = big_file[i] , "0"
        z2 = ' '.join(z)
        fw1.write(z2 + "\n")

fw1.close()

# resultat :
# 1934P1530 1
# 1936I1532 1
# 1952P1534 0

#%_3144

haut

Verifier si les elements d'une petite liste sont contenus dans une grande liste ; et inversement (vlookup) exemple2


#!/usr/bin/python

#@_3145y_capture_vlookup_elements_petite_liste_contenus_dans_grande_liste!!forinopen_range_len_ifin_forinopen_join

# BUT : marquer si des elements d'1 liste L1 sont ds la liste L2

BIG="z-big.txt"
SMALL="z-small.txt"

RESULT1="z-out1.txt"
RESULT2="z-out2.txt"

# BIG :
# abandon
# abduct
# abide
# absorb
# abstain
# abstract
# abuse
# accent
# accentuate
# accept

# SMALL :
# abide
# abstract
# accentuate
# awake

#########

# 1/2 : marquer si les elements de la petite liste (droite)
#       sont dans la grande liste (gauche)

#       shema : grande liste (gauche) - petite liste (droite)

big_file = [line1.strip() for line1 in open (BIG)]        # a gauche

fw1 = open (RESULT1 , 'w')     


for i in range(len(big_file)):

    if big_file[i] in [line2.strip() for line2 in open (SMALL)]:
        print big_file[i] , "  ok contenu ds les 2 listes"
        w1 = big_file[i] , "  ok contenu ds les 2 listes"
        w1b = ''.join(w1)
        fw1.write(w1b + "\n")

    else:
        print big_file[i] , "  NO"
        w2 = big_file[i] , "  NO"
        w2b = ''.join(w2)
        fw1.write(w2b + "\n")

fw1.close()

# resultat :
# abandon   NO
# abduct   NO
# abide   ok contenu ds les 2 listes
# absorb   NO
# abstain   NO
# abstract   ok contenu ds les 2 listes
# abuse   NO
# accent   NO
# accentuate   ok contenu ds les 2 listes
# accept   NO

##########

print "----------"

# 2/2 : marquer si les elements de la grande liste (droite)
#       sont dans la petite liste (gauche)

#       shema : petite liste (gauche) - grande liste (droite)


small_file = [line3.strip() for line3 in open (SMALL)]       # a gauche

fw = open (RESULT2 , 'w')     


for j in range(len(small_file)):

    if small_file[j] in [line4.strip() for line4 in open (BIG)]:
        print small_file[j] , "  ok"
        w1 = small_file[j] , "  ok"
        w1b = ''.join(w1)
        fw.write(w1b + "\n")

    else:
        print small_file[j] , "    -> manque ds la grosse liste"
        w2 = small_file[j] , "    -> manque ds la grosse liste"
        w2b = ''.join(w2)
        fw.write(w2b + "\n")

fw.close()

# resultat :
# abide   ok
# abstract   ok
# accentuate   ok
# awake     -> manque ds la grosse liste
#%_3145

haut

Ecrire le nom du fichier devant toutes les lignes de plusieurs fichiers (exemple 1)


#!/usr/bin/python

#@_3146y_ajouter_nom_fichier_col1_inoutplusieursfichiers_+_renommer!!openr_split_forinopen

import glob
import os

# in.txt :
# abide  @@@  tolerate -  last -  stay
# accept  @@@  receive -  take on -  say yes to -  acknowledge -  stand -  welcome
# access  @@@  admission -  entrance -  attack -  acquire

# out.txt :
# 10   -
# 3   @@@
# 1   abide
# 1   accept


# deleter les anciens fichiers
for currentFile in glob.glob('*'):
    el = "newname-";
    if currentFile.startswith(el):
        os.remove(currentFile)

print " ---> ok fichiers deletes ok"
# time.sleep(TIME)


for line1 in open ("liste.txt"):
    line1 = line1.strip()
    print line1
    w = line1.split(".")[0].strip()

    for line2 in open (line1):
        fw = open ("newname-" + line1 , 'a')     
        fw.write(w + " : " + line2)
fw.close()

# newname-in.txt :
# in : abide  @@@  tolerate -  last -  stay
# in : accept  @@@  receive -  take on -  say yes to -  acknowledge -  stand -  welcome
# in : access  @@@  admission -  entrance -  attack -  acquire

# newname-out.txt :
# out : 10   -
# out : 3   @@@
# out : 1   abide
# out : 1   accept
#%_3146

haut

Ecrire en colonne 1 a l'interieur de plusieurs fichiers et les sauver en modifiant le prefixe (exemple 2)


#!/usr/bin/python

#@_3147y_ajouter_nom_fichier_col1_inoutplusieursfichiers_+_renommer!!openr_openr

import os
import re
import sys
import time

PATHSCRIPTS="/Users/JT/Desktop/1-py-9-10"

PATHSTOCK="/Python27/stock-files-py"

SORTEDLISTE="1-cat-inter2.txt"

TIME=3


# SORTEDLISTE :    # liste de fichiers lus
# ajouter-ligne.py
# and-or.py

# contenu du fichier  :   ajouter-ligne.py
# with open("2-out-2.txt", "r+") as fadd:
#     first_line = fadd.readline()
#         if first_line != "----------\n":
#             lines = fadd.readlines()

# script :
for id2 in open (SORTEDLISTE):
    id2=id2.strip()

    os.chdir(PATHSCRIPTS)         # lire le fichier dans ce repertoire
    for line2 in open (id2 , 'r'):

        os.chdir(PATHSTOCK)
        f3 = open ("zz-" + id2 , "a")         # creation de fichiers zz
        f3.write(id2 + "  @@@  " + line2)    # ecriture avec nom du fichier en colonne 1

f3.close()

print "---> ok copie en zz- des fichiers .py dans le rep : " , PATHSTOCK
time.sleep(TIME)

# resultat : (contenu du fichier  :   zz-ajouter-ligne.py)
# ajouter-ligne.py  @@@  with open("2-out-2.txt", "r+") as fadd:
# ajouter-ligne.py  @@@      first_line = fadd.readline()
# ajouter-ligne.py  @@@      if first_line != "----------\n":
# ajouter-ligne.py  @@@          lines = fadd.readlines()
#%_3147

haut

Remplacer des valeurs en colonne 1 par celles en colonne 2 dans un fichier


#!/usr/bin/python

#@_3148y_dico_fichier1_col1_remplace_col2_ds_fichier2!!split_dic_trimmed_key_value_def_iteritems_replace

import re
import time
TIME=1

# BUT : remplacer de LI5 des valeurs de la colonne 1 par celles de la colonne 2 dans un fichier

IN="in.txt"
LI5="li5.txt"
LI6="li6.txt"
RESULTLI="1-RESULT.txt"

# LI5 :     #  col1 = ancienne valeur  ;  col2 = nouvelle valeur
# 1137 3001
# 1151 3002
# 1123 3003

# IN :
# data1 1137 line1
# example 2 data2 1151 line2
# line3 1123 data3
# line4 1289 data4


# habillage de LI5

f15 = open(LI5 , "r")
f16 = open(LI6 , "w")
for line15 in f15:
    road = line15.split()[0] + ":" + line15.split()[1]
#    print road
    f16.write(road + "\n")
f16.close()

print " ---> ok ajout de ':' entre 'ancien-nouveau' numero ds : " , LI6
time.sleep(TIME)

########################

# creation du dictionnaire : dic

dic = {}
with open(LI6 , "r") as f17:
    for line17 in f17:
        trimmed_line17 = line17.strip()
        if trimmed_line17:
            (key, value) = trimmed_line17.split(':')
            dic[key]=value

# print dic        # {'1142': '3104', '1143': '3093', .............}

print " ---> ok creation du dictionnaire"
time.sleep(TIME)

#########################

# remplacement de  'ancien-nouveau'  numero ds  IN
f20 = open(RESULTLI , "w")
f19 = open(IN , 'r')
my_text = f19.read()

def replace_all(text, dic):
    for i, j in dic.iteritems():
        text = text.replace(i, j)
#        text = re.sub(r"'{}'".format(i), "'{}'".format(j), text)
    return text

txt = replace_all(my_text , dic)
print txt
f20.write(txt)
f20.close()

print " ---> ok remplacement des anciens par tous les nouveaux numeros"
time.sleep(TIME)

# resultat :
# data1 3001 line1
# example 2 data2 3002 line2
# line3 3003 data3
# line4 1289 data4

#%_3148

haut

Supprimer des accents en convertissant de l'ASCII en HEXA et HEXA en ASCII


#!/usr/bin/python

#@_3149y_deleter_accents_en_convertissant_ASCII_en_HEXA!!encode_sub

import os
import re
import string
import sys
import binascii
import base64
import subprocess
import time

START="in.txt"
RESULT="out.txt"

TIME=1

#########

with open (START, 'r') as road1:
    fd1 = open ("1-ascii1.txt", 'w')     
    for ligne in road1:
        t1 = ligne.replace("\n" , "%%%")
#        print t1
        fd1.write(t1)

road1.close()
# fd1.close()

print "--> ok fichier sur 1 ligne (avec %%%)"
time.sleep(TIME)

###########
# convertir en hexa
fd1 = open ("1-ascii1.txt", "r")

fd2 = open ("1-hex1.txt", "w")     
t2 = fd1.read()

# print t2.encode("hex")
fd2.write(t2.encode("hex"))

fd1.close()
# fd2.close()

print "--> ok ascii converti en hexa"
time.sleep(TIME)

############
# separer 2 digits par "espace"
with open ("1-hex1.txt", "r") as fd2:
    lines = fd2.readlines()
with open("1-hex2.txt", "w") as source2:   
    for line in lines:
        m = re.sub('([0-9,a-z][0-9,a-z])', r'\1 ', line)
        source2.write(m)

fd2.close()
# source2.close()

print "--> ok espace apres 2 digits"
time.sleep(TIME)

############ infos
print "---> infos"
print " "

print "c2 9c    oe small ligature   :  oeil : 6f 65 (retirer c2) "
print "c3 ae    i with circumflex   :  paraitre      "
print "c3 a9    e with acute        :  ecouler       "
print "c3 a7    c with cedilla      :  facon         "
print "c3 a0    a with grave        :  a l'avance    "
print "c3 b4    o with circumflex   : role           "
print "c3 bb    u with circumflex   : surete         "
print "c3 b9    u with grave        : ou             "
print "c3 af    i with diaeresis    : naif           "
print "c3 aa    e with circumflex   :  etre          "
print "c2 91    left single quotation mark : '       "
print "c2 92    right single quotation mark : '      "
print "c3 a8    e with grave        : tres           "
print "c3 a2    a with circumflex   : relache        "
print "c3 89    capital letter E with acute : Etat   "
print "c3 ab    e with diaeresis    : Noel           "
print "c2 ab    left double angle quote   : <<       "
print "c2 bb    right double angle quote  : >>       "
print "c2 a3    pound sign                           "
print "c2 ba    degres                               "
print "c2 a0    non breaking space                   "
print "3f 75    oeu                                  "
print "3f 69    oei                                  "


print "ee :  i with circumflex             -->  69 "
print "e9 :  e with acute                  -->  65 "
print "e7 :  c with cedilla                -->  63 "
print "e0 :  a with grave                  -->  61 "
print "f4 :  o with circumflex             -->  6f "
print "fb :  u with circumflex             -->  75 "
print "f9 :  u with grave                  -->  75 "
print "ef :  i with diaeresis              -->  69 "
print "ea :  e with circumflex             -->  65 "
print "91 :  ' left single quotation       -->  91 "
print "92 :  ' right single quotation      -->  92 "
print "e8 :  e with grave                  -->  65 "
print "e2 :  a with circumflex             -->  61 "
print "eb :  e with diaeresis              -->  65 "
print "c9 :  capital letter E with acute   -->  65 "


############ occurrences

# ecrit les occurrences
with open ("1-hex2.txt", 'r') as source2:
    fd3 = open ("1-hex3.txt", 'w')     
    for ligne3 in source2:
        sub1 = "c2 9c"
        sub2 = "c3 a9"
        sub3 = "c3 ae"
        sub4 = "c3 a7"
        sub5 = "c3 a0"
        sub6 = "c3 aa"
        sub7 = "c2 91"
        sub8 = "c2 92"
        sub9 = "c3 bb"
        sub10 = "c3 b4"
        sub11 = "c3 a2"
        sub12 = "c3 a8"
        sub13 = "c3 af"
        sub14 = "c3 89"
        sub15 = "c3 ab"
        sub16 = "c2 ab"
        sub17 = "c2 bb"
        sub18 = "c2 a3"
        sub19 = "c2 ba"
        sub20 = "c2 a0"
        sub21 = "c3 b9"
        sub22 = "3f 75"
        sub23 = "3f 69"

        sub24 = "ee"
        sub25 = "e9"
        sub26 = "e7"
        sub27 = "e0"
        sub28 = "f4"
        sub29 = "fb"
        sub30 = "f9"
        sub31 = "ef"
        sub32 = "ea"
        sub33 = "91"
        sub34 = "92"
        sub35 = "e8"
        sub36 = "e2"
        sub37 = "9c"
        sub38 = "eb"
        sub39 = "c9"


        print " "
        print "control des doubles bytes (dans home)"
        print " "
        print "nb de : c2 9c : " , ligne3.count(sub1)
        print "nb de : c3 a9 : " , ligne3.count(sub2)
        print "nb de : c3 ae : " , ligne3.count(sub3)
        print "nb de : c3 a7 : " , ligne3.count(sub4)
        print "nb de : c3 a0 : " , ligne3.count(sub5)
        print "nb de : c3 aa : " , ligne3.count(sub6)
        print "nb de : c2 91 : " , ligne3.count(sub7)
        print "nb de : c2 92 : " , ligne3.count(sub8)
        print "nb de : c3 bb : " , ligne3.count(sub9)
        print "nb de : c3 b4 : " , ligne3.count(sub10)
        print "nb de : c3 a2 : " , ligne3.count(sub11)
        print "nb de : c3 a8 : " , ligne3.count(sub12)
        print "nb de : c3 af : " , ligne3.count(sub13)
        print "nb de : c3 89 : " , ligne3.count(sub14)
        print "nb de : c3 ab : " , ligne3.count(sub15)
        print "nb de : c2 ab : " , ligne3.count(sub16)
        print "nb de : c2 bb : " , ligne3.count(sub17)
        print "nb de : c2 a3 : " , ligne3.count(sub18)
        print "nb de : c2 ba : " , ligne3.count(sub19)
        print "nb de : c2 a0 : " , ligne3.count(sub20)
        print "nb de : c3 b9 : " , ligne3.count(sub21)
        print "nb de : 3f 75 : " , ligne3.count(sub22)
        print "nb de : 3f 69 : " , ligne3.count(sub23)

        print " "
        print "control des simples bytes (dans cgg)"
        print " "
        print "nb de : ee : " , ligne3.count(sub24)
        print "nb de : e9 : " , ligne3.count(sub25)
        print "nb de : e7 : " , ligne3.count(sub26)
        print "nb de : e0 : " , ligne3.count(sub27)
        print "nb de : f4 : " , ligne3.count(sub28)
        print "nb de : fb : " , ligne3.count(sub29)
        print "nb de : f9 : " , ligne3.count(sub30)
        print "nb de : ef : " , ligne3.count(sub31)
        print "nb de : ea : " , ligne3.count(sub32)
        print "nb de : 91 : " , ligne3.count(sub33)
        print "nb de : 92 : " , ligne3.count(sub34)
        print "nb de : e8 : " , ligne3.count(sub35)
        print "nb de : e2 : " , ligne3.count(sub36)
        print "nb de : 9c : " , ligne3.count(sub37)
        print "nb de : eb : " , ligne3.count(sub38)
        print "nb de : c9 : " , ligne3.count(sub39)


        change1 = ligne3.replace('c2 9c' , '9c').replace('c3 a9' , '65').replace('c3 ae' , '69').replace('c3 a7' , '63')
	change1 = ligne3.replace('c3 a0' , '61').replace('c3 aa' , '65').replace('c2 91' , '91').replace('c2 92' , '92')
	change1 = ligne3.replace('c3 bb' , '75').replace('c3 b4' , '6f').replace('c3 a2' , '61').replace('c3 a8' , '65')
	change1 = ligne3.replace('c3 af' , '69').replace('c3 89' , '65').replace('c3 ab' , '65').replace('c2 ab' , '20')
	change1 = ligne3.replace('c2 bb' , '20').replace('c2 a3' , '4c 20').replace('c2 ba' , '20 44').replace('c2 a0' , '20')
	change1 = ligne3.replace('c3 b9' , '75').replace('3f 75' , '6f 65 75').replace('3f 69' , '6f 65 69')

        fd3.write(change1)

# fd3.close()
source2.close()

print "--> ok double bytes change en hexa"
time.sleep(TIME)

print "--> verif des doubles bytes et changement des bytes simples"
time.sleep(TIME)

with open ("1-hex3.txt", 'r') as fd3:
    fd4 = open ("1-hex4.txt", 'w')     
    for ligne4 in fd3:

        print "nb de : c2 9c : " , ligne4.count(sub1)
        print "nb de : c3 a9 : " , ligne4.count(sub2)
        print "nb de : c3 ae : " , ligne4.count(sub3)
        print "nb de : c3 a7 : " , ligne4.count(sub4)
        print "nb de : c3 a0 : " , ligne4.count(sub5)
        print "nb de : c3 aa : " , ligne4.count(sub6)
        print "nb de : c2 91 : " , ligne4.count(sub7)
        print "nb de : c2 92 : " , ligne4.count(sub8)
        print "nb de : c3 bb : " , ligne4.count(sub9)
        print "nb de : c3 b4 : " , ligne4.count(sub10)
        print "nb de : c3 a2 : " , ligne4.count(sub11)
        print "nb de : c3 a8 : " , ligne4.count(sub12)
        print "nb de : c3 af : " , ligne4.count(sub13)
        print "nb de : c3 89 : " , ligne4.count(sub14)
        print "nb de : c3 ab : " , ligne4.count(sub15)
        print "nb de : c2 ab : " , ligne4.count(sub16)
        print "nb de : c2 bb : " , ligne4.count(sub17)
        print "nb de : c2 a3 : " , ligne4.count(sub18)
        print "nb de : c2 ba : " , ligne4.count(sub19)
        print "nb de : c2 a0 : " , ligne4.count(sub20)
        print "nb de : c3 b9 : " , ligne4.count(sub21)
        print "nb de : 3f 75 : " , ligne4.count(sub22)
        print "nb de : 3f 69 : " , ligne4.count(sub23)


# changer encore les bytes simples qui restent : ee e9 e7 ...
        change2 = ligne4.replace('ee' , '69').replace('e9' , '65').replace('e7' , '63').replace('e0' , '61')
	change2 = ligne4.replace('f4' , '6f').replace('fb' , '75').replace('f9' , '75').replace('ef' , '69')
	change2 = ligne4.replace('ea' , '65').replace('91' , '91').replace('92' , '92').replace('e8' , '65')
	change2 = ligne4.replace('e2' , '61').replace('9c' , '6f 65').replace('eb' , '65').replace('c9' , '65')

        fd4.write(change2)

fd3.close()
fd4.close()

###################
# lecture pour verif finale

print " "
print "--> verif finale des doubles bytes et simples bytes"
time.sleep(TIME)

with open ("1-hex4.txt", 'r') as fd4:
    for ligne5 in fd4:

        print "nb de : c2 9c : " , ligne5.count(sub1)
        print "nb de : c3 a9 : " , ligne5.count(sub2)
        print "nb de : c3 ae : " , ligne5.count(sub3)
        print "nb de : c3 a7 : " , ligne5.count(sub4)
        print "nb de : c3 a0 : " , ligne5.count(sub5)
        print "nb de : c3 aa : " , ligne5.count(sub6)
        print "nb de : c2 91 : " , ligne5.count(sub7)
        print "nb de : c2 92 : " , ligne5.count(sub8)
        print "nb de : c3 bb : " , ligne5.count(sub9)
        print "nb de : c3 b4 : " , ligne5.count(sub10)
        print "nb de : c3 a2 : " , ligne5.count(sub11)
        print "nb de : c3 a8 : " , ligne5.count(sub12)
        print "nb de : c3 af : " , ligne5.count(sub13)
        print "nb de : c3 89 : " , ligne5.count(sub14)
        print "nb de : c3 ab : " , ligne5.count(sub15)
        print "nb de : c2 ab : " , ligne5.count(sub16)
        print "nb de : c2 bb : " , ligne5.count(sub17)
        print "nb de : c2 a3 : " , ligne5.count(sub18)
        print "nb de : c2 ba : " , ligne5.count(sub19)
        print "nb de : c2 a0 : " , ligne5.count(sub20)
        print "nb de : c3 b9 : " , ligne5.count(sub21)
        print "nb de : 3f 75 : " , ligne5.count(sub22)
        print "nb de : 3f 69 : " , ligne5.count(sub23)


        print " "
        print "nb de : ee : " , ligne5.count(sub24)
        print "nb de : e9 : " , ligne5.count(sub25)
        print "nb de : e7 : " , ligne5.count(sub26)
        print "nb de : e0 : " , ligne5.count(sub27)
        print "nb de : f4 : " , ligne5.count(sub28)
        print "nb de : fb : " , ligne5.count(sub29)
        print "nb de : f9 : " , ligne5.count(sub30)
        print "nb de : ef : " , ligne5.count(sub31)
        print "nb de : ea : " , ligne5.count(sub32)
        print "nb de : 91 : " , ligne5.count(sub33)
        print "nb de : 92 : " , ligne5.count(sub34)
        print "nb de : e8 : " , ligne5.count(sub35)
        print "nb de : e2 : " , ligne5.count(sub36)
        print "nb de : 9c : " , ligne5.count(sub37)
        print "nb de : eb : " , ligne5.count(sub38)
        print "nb de : c9 : " , ligne5.count(sub39)

        print "--> ok double bytes change en hexa"
        time.sleep(TIME)

# test sur le dernier caractere
        print "dernier caractere : " , ligne5[:2]

fd4.close()

##################

#+_3149_deleter_les_blancs!!withopen_readlines_withopen_sub

with open ("1-hex4.txt", "r") as fd5:
    lines = fd5.readlines()
with open("1-hex5.txt", "w") as fd6:     
    for line in lines:
        m = re.sub(' ', r'', line)
        fd6.write(m)

fd5.close()
fd6.close()
#-
print "--> ok suppression de l'espace entre les bytes"
time.sleep(TIME)

##########################
# convertir hexa en ascii

new1 = open ("1-hex5.txt", "r")

new2 = open ("1-ascii-6.txt", "w")     
town = new1.read()
print "taille du resultat hexa sans espace : " , len(town)

new2.write(town.decode("hex"))

new1.close()
# new2.close()

#######################

#+_3149_modifier_remplacer_pattern!!withopen_readlines_sub
with open("1-ascii-6.txt", "r") as new2:
    lines = new2.readlines()
with open(RESULT, "w") as new3:    
    for line in lines:
        m = re.sub('%%%', r'\n', line)
        new3.write(m)

new2.close()
new3.close()
#-
print "--> ok resultat dans : " ,RESULT
#%_3149

haut

Apres avoir delimite une zone de capture, indiquer les frequences des mots


#!/usr/bin/python

#@_3150y_count_frequences_des_mots!!read_split_sorted_set_count_format_withopen_replace

import os
import re
import string
import sys
import time

START="z-in-4c.txt"
OUTUK="z-in-4ca.txt"
OUTUKFREQ="z-in-4cb.txt"
OUTUKFREQ2="z-in-4cc.txt"

# START
# @ arise
# a doubt arose in his mind   un doute est apparu dans son esprit
#  if the need arises   en cas de besoin
#  if the occasion arises   si l'occasion se presente


# selectionner la partie UK  (a gauche du separateur)
with open (START, 'r') as road1:
    fd1 = open (OUTUK, 'w')     
    for ligne1 in road1:
        m = ligne1.split('   ')[0]
        print m.strip()
        fd1.write(m + "\n")

fd1.close()
road1.close()

###############

words = open (OUTUK, "r").read().split()
uniqWords = sorted(set(words))
fd2 = open (OUTUKFREQ , 'w')     
for word in uniqWords:

#   print words.count(word), word
    memor = words.count(word), word

    fd2.write("{0}\n".format(memor))

# fd2.close()
# words.close()

###############
# traitement du fichier des frequencies

with open(OUTUKFREQ, 'r') as fd2:
    fd3 = open (OUTUKFREQ2 , "w")     
    for line in fd2:
        new = line.replace("')" , "").replace("(" , "").replace(", '" , " , ")

        print new.strip()
        fd3.write(new + "\n")

fd2.close()
fd3.close()

# resultat
# @ arise
# a doubt arose in his mind
# if the need arises
# if the occasion arises
# 1 , @
# 1 , a
# 1 , arise
# 2 , arises
# 1 , arose
# 1 , doubt
# 1 , his
# 2 , if
# 1 , in
# 1 , mind
# 1 , need
# 1 , occasion
# 2 , the
#%_3150

haut

Selectionner des colonnes en utilisant : SPLIT


#!/usr/bin/python

#@_3151y_capture_colonnes!!withopen_split

import sys
import os
import re

# in.txt :
# 0          @ argv - % Replace based on another file
# 1          @ break - % Print last instance of file


# selectionner les parties avec les separateurs

with open ("in.txt" , 'r') as fww:
    fd4 = open ("out.txt" , 'w')     
    for ligne3 in fww:

        m1 = ligne3.split('%')[1].strip()
        m2 = ligne3.split('@')[0].strip()
        m3 = ligne3.split('@')[1].strip()

        m = "@ " + m3 + " - @!! " + m2
        print m
        fd4.write(m + "\n")

fww.close()
# fd4.close()

# resultat :
# @ argv - % Replace based on another file - @!! 0
# @ break - % Print last instance of file - @!! 1
#%_3151

haut

Lire un fichier ligne par ligne en splitant avec un compteur (boucle while)


#!/usr/bin/python

#@_3152y_lire_fichier_ligne_par_ligne!!while_openr_split_+=

import time

TIME=1

# in.txt
#
# a
# b
# c
# d

count = 1
while (count < 5):

    f = open ("in.txt")
    li = [ ln.split() for ln in f ]
    print count , li[count]
    time.sleep(TIME)

    count = count + 1

f.close()

# resultat
# 1 ['a']
# 1 ['b']
# 1 ['c']
# 1 ['d']
#%_3152

haut

Remplacer un pattern


#!/usr/bin/python

#@_3153y_modifier_remplacer_1_pattern!!withopen_replace

INTER4="inter4.txt"
INTER5="inter5.txt"

# INTER4 :
# Line 1
# @@ data
# %@
# Line 4
# End

with open (INTER4 , 'r') as fwhab4:
    fwhab5 = open (INTER5 , 'w')     
    for line4 in fwhab4:
        print line4.replace('@@' , 'NEW1').replace('%@' , 'NEW2').strip()
        w5 = line4.replace('@@' , 'NEW1').replace('%@' , 'NEW2').strip()
        fwhab5.write(w5 + "\n")

fwhab4.close()
fwhab5.close()

# resultat :
# Line 1
# NEW1 data
# NEW2
# Line 4
# End
#%_3153

haut

Joindre 2 lignes consecutives sur une seule ligne


#!/usr/bin/python

#@_3154y_joindre_2_lignes_successives_sur_1_ligne!!read_split_enumerate_endswith

IN="in.txt"

# IN :
# a name=go1</a>
# cumuler_des_valeurs_d_1_colonne_avec_remise_a_zero
# a name=go2</a>
# afficher_1_fichier


f = open (IN).read().split("\n")
fw = open ("out.txt" , "w")      

for i,line in enumerate(f):
    if line.endswith(">"):
        h = line + f[i+1]
        print h
        fw.write(h + "\n")
fw.close()

# resultat :
# a name=go1</a>cumuler_des_valeurs_d_1_colonne_avec_remise_a_zero
# a name=go2</a>afficher_1_fichier
#%_3154

haut

Merge 2 files side by side (equivalent de PASTE en bash)


#!/usr/bin/python

#@_3155y_joindre_2_files_side_by_side_equivalent_paste!!openr_rstrip_readline

INTER1="1-pastefile1.txt"
INTER2="1-pastefile2.txt"
INTER3="1-pastfile-result.txt"

# INTER1 :
# A1 A2 A3
# A4 A5 A6
# A7 A8 A9

# INTER2 :
# B1 B2 B3
# B4 B5 B6
# B7 B8 B9


# merge 2 files side by side

comp1 = open (INTER1 , "r")
comp2 = open (INTER2 , "r")
f5 = open (INTER3 , "w")     

for line in comp1:

    wcomp = line.rstrip() + " " + comp2.readline().strip()
    print wcomp
    f5.write(wcomp + "\n")

comp1.close()
comp2.close()
f5.close()

# resultat
# A1 A2 A3 B1 B2 B3
# A4 A5 A6 B4 B5 B6
# A7 A8 A9 B7 B8 B9
#%_3155

haut

Joindre 2 lignes consecutives, deleter la 3 eme


#!/usr/bin/python

#@_3156y_joindre_2_lignes_consecutives_et_deleter_la_3eme!!readlines_enumerate_startswith_join_replace

DATAUKFR="in.txt"
OUT71="out1.txt"
OUT72="out2.txt"


# DATAUKFR
# we'll have to accept whatever the panel says
# nous devons accepter tout le panneau dit
# traduction automatique de Google
# I got your invitation but I'm unable to accept
# Je ai recu votre invitation, mais je suis incapable d'accepter
# traduction automatique de Google

#+_3156_ajouter_texte_fin_de_ligne!!readlines_enumerate_startswith_join_replace
data = open (DATAUKFR).readlines()
fw1 = open (OUT71, 'w')     
for n,line in enumerate(data):
    if line.startswith("traduction"):
       data[n] = "\n" + line.rstrip()
    else:
       data[n]=line.rstrip()
#      print ' @@ '.join(data).replace('traduction automatique de Google  @@  ' , '')
       fw1.write('  @@  '.join(data).replace('traduction automatique de Google  @@  ' , ''))
#-

#+_3156_deleter_2_eme_occurrence_d_1_pattern_bout_de_ligne!!withopen_replace
with open (OUT71 , 'r') as fw1:
    fw2 = open (OUT72, 'w')     
    for line in fw1:

        fchar = '@@'
        rchar = ''
        print line[::-1].replace(fchar, rchar[::-1], 1)[::-1].strip()
        fw2.write(line[::-1].replace(fchar, rchar[::-1], 1)[::-1])

fw1.close()
# data.close()
#-
# resultat
# we'll have to accept whatever the panel says  @@  nous devons accepter tout le panneau dit
# I got your invitation but I'm unable to accept  @@  J' ai recu votre invitation, mais je suis incapable d'accepter
#%_3156

haut

Test sur l'existence d'un mot dans un fichier


#!/usr/bin/python

#@_3157y_tester_si_1_mot_existe_dans_1_fichier_rawinput!!rawinput_openr_readlines_ifany

# in.txt
# to make an attempt at doing something OR to do something
# we made our first attempt in January
# she made every attempt to put him at ease


a = raw_input("entrer 1 mot a rechercher  : ")
print "mot recherche : " , a

fd = open ("in.txt", 'r')
t = fd.readlines()

if any([a in s for s in t]):
    print "ok : le mot : " , a , " : existe dans le fichier"
else:
    print "non pas de mot : " , a , " dans le fichier"

fd.close()

# resultat :
# entrer 1 mot a rechercher  : make
# mot recherche :  make
# ok : le mot :  make  : existe dans le fichier

# entrer 1 mot a rechercher  : souris
# mot recherche :  souris
# non pas de mot :  souris  dans le fichier
#%_3157

haut

Supprimer des lignes si des mots sont dans un fichier


#!/usr/bin/python

#@_3158y_deleter_lignes_si_des_mots_sont_dans_1_fichier!!read_splitlines_ifanyin_forin

IN = "in.txt"
OUT = "out.txt"
DELETE = "z-delete.txt"

# BUT : des patterns dans une liste vont deleter des lignes les contenant

# data1 = c2 9c
# data2 = c3 a9
# data3 = c3 ae
# data4 = c3 a7
# data5 = c3 a0

# DELETE :
# data1 =
# data2 =

bad_words = open (DELETE).read().splitlines()

# print bad_words

with open(IN) as oldfile:
    newfile = open (OUT , 'w')    
    for line in oldfile:
        if not any(bad_word in line for bad_word in bad_words):
            print line.strip()
            newfile.write(line)

oldfile.close()
newfile.close()

# resultat :
# data3 = c3 ae
# data4 = c3 a7
# data5 = c3 a0
#%_3158

haut

range - pop : selectionne un element d'une liste


#!/usr/bin/python

#@_3159y_capture_element_d_1_liste!!range_pop

a = range(10)
print a

# resultat
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

###############
b = [1,14,25,31,47,55]
b = b[:-1]
print b

# resultat
# [1, 14, 25, 31, 47]

###############
print b.pop(3)

# resultat
# 31
#%_3159

haut

sorted(list(set())) : liste des elements uniques


#!/usr/bin/python

#@_3160y_trier_et_elements_uniques!!splitlines_sorted_set_append_forinif_join

START="1-uniq.txt"
OUT="1-uniq-out.txt"


# START :
# 5
# 6
# 5
# 8
# 3
# 8
# 9
# 6


mylist = open (START).read().splitlines()     
print mylist , "     " , type(mylist)   # ['5', '6', '5', '8', '3', '8', '9', '6']      <type 'list'>
fw = open (OUT , 'w')     

# liste triee
mylist2 = sorted(list(set(mylist)))
print mylist2 ,  "     " , type(mylist2)      # ['3', '5', '5', '6', '6', '8', '8', '9']      <type 'list'>

# elements uniques
unique = []
[unique.append(item) for item in mylist2 if item not in unique]
print unique  ,  "     " , type(unique)    # ['3', '5', '6', '8', '9']      <type 'list'>

# convertir en string
str1 = '\n'.join(str(e) for e in unique)
print str1 ,   "     " , type(str1)      # tout le fichier d'1 bloc : <type 'str'>
#-

fw.write(str1)
fw.close()

# resultat
# ['5', '6', '5', '8', '3', '8', '9', '6']       <type 'list'>
# ['3', '5', '5', '6', '6', '8', '8', '9']       <type 'list'>
# ['3', '5', '6', '8', '9']       <type 'list'>
# 3
# 5
# 6
# 8
# 9       <type 'str'>
#%_3160

haut

Trier un fichier (sorted set)


#!/usr/bin/python

#@_3161y_trier_fichier_sorted_set!!readlines_sorted_set_replace

# line0815   %   magnifies -magnifying -magnified --
# line0869   %   notices -noticing -noticed --
# line0868   %   notes -noting -noted --


f33 = open ("in.txt").readlines()
f34 = open("out.txt" , 'w')

for line33 in sorted(set(f33)):
        line33 = line33.replace("line" , "").replace("-" , "")
        print line33.strip()
        f34.write(line33)

f34.close()

# resultat :
# 0815   %   magnifies magnifying magnified
# 0868   %   notes noting noted
# 0869   %   notices noticing noticed

#%_3161

haut

Trier un fichier (read splitlines)


#!/usr/bin/python

#@_3162y_trier_fichier_read_splitlines!!openr_read_splitlines_sorted_join

# in.txt
# 1087 data99
# 1178 data11
# 1005 data05


fd = open ("in.txt" , 'r')
fw = open ("out.txt" , 'w')     

t = fd.read().splitlines()

d = sorted(t)
# d = sorted(t , reverse=True)     # tri en ordre inverse

print '\n'.join(d)
fw.write('\n'.join(d))
fw.close()

# resultat :
# 1005 data05
# 1087 data99
# 1178 data11
#%_3162

haut

Trier sur une seule colonne (list sort key lambda)


#!/usr/bin/python

#@_3163y_trier_fichier_sur_une_colonne_key_lambda!!withopen_search_replace_forinopen_sort_key

import re

# in.txt :

# # arise
# intransitive verb
# # achieve
# transitive verb
# # allow
# transitive verb

######
# liste des verbes
with open ( "in.txt" , 'r') as road:
    f2 = open ("1-liste.txt" , "w")     

    for verbe in road:
        m = re.search("# " , verbe)
        if m:
            print verbe.replace("# " , ''),
            f2.write(verbe.replace("# " , ""))

f2.close()

#####
# trier
d_list = [line2.strip() for line2 in open ("1-liste.txt")]

f3 = open ("1-liste-triee.txt", 'w')      

d_list.sort(key = lambda line2: line2, reverse=False)

for line2 in d_list:
    print line2
    f3.write(line2 + "\n")
f3.close()

# resultat :
# arise
# achieve
# allow
#%_3163

haut

Trier en choisissant la colonne du tri (list sort key lambda split)


#!/usr/bin/python

#@_3164y_trier_fichier_choisissant_colonne_du_tri_key_lambda_split!!forinopen_sort_key_int_split

# fichier in.txt :
# 2779  ,  a
# 2  ,  a.m.
# 1  ,  aback
# 1  ,  ability
# 12  ,  able
# 1  ,  aboard
# 6  ,  abortion
# 326  ,  about
# 13  ,  above

d_list = [ligne.strip() for ligne in open ("in.txt")]

fd = open ("out-sorted.txt", 'w')     

d_list.sort(key = lambda ligne: int(ligne.split(',')[0]), reverse=True)

for ligne in d_list:
    print ligne
    fd.write(ligne + "\n")
fd.close()

# resultat :
# 2779  ,  a
# 326  ,  about
# 13  ,  above
# 12  ,  able
# 6  ,  abortion
# 2  ,  a.m.
# 1  ,  aback
# 1  ,  ability
# 1  ,  aboard
#%_3164

haut

Compter les fichiers d'un repertoire


#!/usr/bin/python

#@_3165y_count_fichiers_d_1_repertoire!!len_fnmatch_filter_oslistdir_search

#+_3165_count_fichiers_d_1_repertoire_exemple1!!len_fnmatch_filter_oslistdir
import fnmatch

# nb de fichiers  du repertoire  PATHTOTALWXY   (methode courte)

print len(fnmatch.filter(os.listdir(PATHTOTALWXY), '*.txt'))
#-
######

#+_3165_count_fichiers_d_1_repertoire_exemple2!!oslistdir_+=
filenames = os.listdir(PATHZ)
count2 = 0
for file in filenames:

    count2 = count2 + 1

print "nb de fichiers z- ds PATHZ : " , count2
#-
#######

#+_3165_count_fichiers_d_1_repertoire_exemple3!!oslistdir_search_+=
import re

filenames = os.listdir(PATHY)
count1 = 0
count2 = 0
for file in filenames:

    m1 = re.search("y-" + lettrealpha , file)
    if m1:
#        print file.strip()

        count1 = count1 + 1

    m2 = re.search("y-" , file)
    if m2:
#        print file.strip()

        count2 = count2 + 1
#-
print ""
print "dans : " , PATHY , " ; nb de fichiers : y-" + lettrealpha , " : " , count1

print "dans : " , PATHY , " ; nb de fichiers : y-  : " , count2

# resultat :

#dans :  /Python27/0-0-2-COLLINS-syno/Y-  ; nb de fichiers : y-g  :  16
#dans :  /Python27/0-0-2-COLLINS-syno/Y-  ; nb de fichiers : y-  :  916
#%_3165

haut

Lister un repertoire avec 'getstatusoutput'


#!/usr/bin/python

#@_3166y_lister_repertoire!!getstatusoutput_split_forinif

import commands

(st, output) = commands.getstatusoutput('ls -a')

print [f for f in output.split('\n') if 'pattern' in f ]

# resultat : (liste des fichiers)
z-pattern1.txt z-pattern2.txt
#%_3166

haut

Lister un repertoire avec 'startswith'


#!/usr/bin/python

#@_3167y_lister_repertoire!!withopen_oslistdir_startswith

import os

PATH="/Python27/1_2015-5-28"
OUT1="1-out1.txt"
FILESTOCONCATENATE="CLIENT"

with open(OUT1 , 'w') as output:      
    dir = os.listdir(PATH)
    for file in dir:
        if file.startswith(FILESTOCONCATENATE):
            print file
            output.write(file + "\n")
output.close()

# resultat
# CLIENT1
# CLIENT2
# CLIENT3
#%_3167

haut

Lister un repertoire avec 'search'


#!/usr/bin/python

#@_3168y_lister_repertoire!!oslistdir_search

PATHHOME="/Python27/TESTS/"
LISTY="1-liste-y.txt"

os.chdir(PATHHOME)
fy = open (LISTY , "w")     
filenamey = os.listdir(PATHHOME)

for filey in filenamey:
    my = re.search("y-" , filey)
    if my:
#        print filey.strip()
        os.chdir(PATHHOME)
        fy.write(filey + "\n")

fy.close()

# resultat :
# y-1.txt
# y-2.txt
# y-3.txt
#%_3168

haut

Tester si un fichier est vide


#!/usr/bin/python

#@_3169y_tester_si_1_fichier_est_vide!!oslistdir_ospath_getsize

import os

PATHY="/PYTHON/Y"

filenamey = os.listdir(PATHY)
for filey in filenamey:
    os.chdir(PATHY)
    taille = os.path.getsize(filey)
    if taille == 0:
        print "   ---> la taille de " , filey , " est 0"
#%_3169

haut

Copier un fichier dans un autre repertoire (oubien le changer de repertoire)


#!/usr/bin/python

#@_3170y_copier_deplacer_fichier_ds_autre_repertoire!!shutil_move_copy

import os
import shutil

dir_src = PATHHOME + RESULTTOTAL
dir_dst = PATHFR + RESULTTOTAL


# shutil.move(dir_src, dir_dst)     # move
shutil.copy2(dir_src, dir_dst)     # copy

# os.chdir(PATHHOME)   # important de revenir ds repertoire d'origine


print " ---> ok copie de DICO UK ING ds le repertoire FR"


#%_3170

haut

Copier plusieurs fichiers de meme prefixe dans un autre repertoire


#!/usr/bin/python

#@_3171y_copier_changer_repertoire_inoutplusieursfichiers!!oslistdir_startswith_shutil_copy_ospath_join

import os
import shutil

PATH="/Python27/0-0-2-collins-def-10-9"
PATHZ="/Python27/0-0-2-collins-def-10-9/Z-/"
PATHW = "/Python27/0-0-2-collins-def-10-9/W-/"

for fname in os.listdir(PATH):
    if fname.startswith("w-"):

        shutil.copy(os.path.join(PATH, fname), PATHW)

# resultat :
# les fichiers w- sont copies dans le repertoire PATHW
#%_3171

haut

Copier plusieurs fichiers dans un autre fichier


#!/usr/bin/python

#@_3172y_copier_inplusieursfichiers_dans_1_seul_fichier!!oslistdir_startswith_openr_read

import os
import glob

DATAUKFR="data-az.txt"

# le but est de copier bout a bout le contenu de plusieurs fichiers
# equivalent a 'cat' en bash

#########################
# deleter les anciens fichiers
for currentFile in glob.glob('*'):
    e1 = "az";

    if currentFile.startswith(e1):
        os.remove(currentFile)

##########
rep="C:\Python27"
filout = open (DATAUKFR, 'a')     
for files in os.listdir(rep):
    if files.startswith('pattern'):
        filin = open (files,'r')
        data = filin.read()
        print files
        filout.write(data)

filin.close()
filout.close()

# resultat :
# fichier1.txt
# fichier2.txt
#%_3172

haut

Copier plusieurs directories dans un autre directory


#!/usr/bin/python

#@_3173y_copier_plusieurs_repertoires_dans_1_autre_repertoire!!glob_oswalk_ospath_exists_osmakedirs_fnmatch_filter_shutil_copy2

import sys
import os
import re
import glob
import shutil

import os.path
import fnmatch

# BUT : copier tous les fichiers uwxy (provenant de plusieurs directories) ds 1 seul directory : PATHTOTALUWXY

# source
PATHUWXY="/nfs/u/0-0-3-WR-FRdef/UWXY-*"       # tous les UWXY-  (garder le tiret -)

# destination
PATHTOTALUWXY="/nfs/u/0-0-3-WR-FRdef/UWXYTOTAL"      # (sans tiret -)

# excluded_subdirs = ['dir1', 'dir2']  # subdir to exclude from copy

# folder for the destination of the copy
dest_dir = PATHTOTALUWXY

files_patterns = ['*.txt']

for root_path in glob.glob(PATHUWXY):
    print root_path

    for root, dirs, files in os.walk(root_path): # recurse walking
#        for dir in excluded_subdirs:
#            if dir in dirs:
#                dirs.remove(dir)   # remove the dir from the subdirs to visit

        if not os.path.exists(dest_dir):
            os.makedirs(dest_dir)  # create the dir if not exists

        for pattern in files_patterns:
            for thefile in fnmatch.filter(files, pattern):  # filter the files to copy
                shutil.copy2(os.path.join(root, thefile), dest_dir) #copy file
#%_3173

haut

Renommer un fichier


#!/usr/bin/python

#@_3174y_renommer_1_fichier!!oslistdir_osrename_replace

for filename in os.listdir('.'):
    os.rename(filename, filename.replace('file_1.txt' , 'file_001.txt'))
#%_3174

haut

Renommer plusieurs fichiers en changeant du texte


#!/usr/bin/python

#@_3175y_renommer_inoutplusieursfichiers!!glob_join_osrename

import os
import glob

# les fichiers sont :
# cable
# calculate

LETTREMIN="c"          # 1/2  changer ici
LETTREMAX="C"           #2/2  changer ici

PATH="/Python27/tests-2017-5-et-6/" + LETTREMAX

os.chdir(PATH)
for file in glob.glob(LETTREMIN + "*"):
    oldF="".join(file.split()[0])
    newF = oldF , ".txt"
    newF2 = ''.join(newF)

    os.rename(oldF , newF2)

# resultat dans PATH :
# cable.txt
# calculate.txt

#%_3175

haut

Renommer plusieurs fichiers selon fichier 2 colonnes (col1=ancien - col2=nouveau)


#!/usr/bin/python

#@_3190y_renommer_inoutplusieursfichiers_selon_fichier_2_colonnes!!split_ospathexists_rename

import os
import re

# BUT :  renommer les fichiers part... selon le fichier LI5

LI5="1-file-old-new.txt"

# il existe 3 fichiers dont les noms sont au depart :
# part1123.txt
# part1137.txt
# part1151.txt

# LI5 :  (col1 = ancien  //  col2 = nouveau)
# 1137  3001
# 1151  3002
# 1123  3003

with open(LI5 , "r") as reader:
    for row in reader:
        oldname = row.split()[0]
        oldname2 = "part" + oldname + ".txt"
        newname = row.split()[1]
        newname2 = "part" + newname + ".txt"
 
        if os.path.exists(oldname2):
            os.rename(oldname2 , newname2)
reader.close()

# resultat :  les 3 fichiers ont ete renommes :
# part3001.txt
# part3002.txt
# part3003.txt

#%_3190

haut

Renommer plusieurs fichiers en ajoutant 0 devant des digits


#!/usr/bin/python

#@_3176y_renommer_inoutplusieursfichiers!!glob_join_split_osrename

import os,glob

# noms des fichiers avant :
# CLIENT-1
# CLIENT-11

# fichier sous la forme : CLIENT-1
for file1 in glob.glob("CLIENT-[0-9]"):
    digita = "".join(file1.split("-")[0])
    digitb = "".join(file1.split("-")[1])
    digitc = digita , "-00" , digitb
    digitd = "".join(digitc)

    os.rename(file1,digitd)

#####
# fichier sous la forme : CLIENT-11
for file2 in glob.glob("CLIENT-[0-9][0-9]"):
    digitaa = "".join(file2.split("-")[0])
    digitbb = "".join(file2.split("-")[1])
    digitcc = digitaa , "-0" , digitbb
    digitdd = "".join(digitcc)

    os.rename(file2,digitdd)

# noms des fichiers apres :
# CLIENT-001
# CLIENT-011
#%_3176

haut

Deleter un fichier (exemple 1)


#!/usr/bin/python

#@_3177y_deleter_fichier_exemple_1!!ospath_exists_osremove

import os

os.path.exists('fichier.txt') and os.remove('fichier.txt')

#%_3177

haut

Deleter un fichier (exemple 2)



#@_3178y_deleter_fichier_exemple_2!!currentFile_glob_startswith_osremove

#!/usr/bin/python

import time
import glob
import os

TIME=2

for currentFile in glob.glob('*'):
    e1 = "interrepl";
    e2 = "data-forsear";
    if currentFile.startswith(e1):
        os.remove(currentFile)
    if currentFile.startswith(e2):
        os.remove(currentFile)

print "fichiers deletes"
time.sleep(TIME)
#%_3178

haut

Deleter un fichier s'il est vide



#@_3179y_deleter_fichier_si_vide!!oslistdir_ospath_getsize_startswith_osremove

# get list of all files in the directory
list_files = [x for x in os.listdir(PATH) if x[0]!='.']

# now loop through the files and remove empty ones
for each_file in list_files:

# check size and delete if 0
    if os.path.getsize(each_file) == 0:
        if each_file.startswith("stz-"):   # ATTENTION  ICI SUPPRESSION DE FICHIERS stz-
#            print each_file
	    os.remove(each_file)

#%_3179

haut

Creer des paragraphes suivant la premiere lettre des mots de la colonne 1


#!/usr/bin/python

#@_3214y_paragraphes_a_la_premiere_lettre_outplusieursfichiers!!readline_while_break_startswith

import os
import glob

LETTRE="1-alpha.txt"

IN1="1-in1.txt"
IN2="1-in2.txt"

# LETTRE :
# a
# b


# deleter anciens resultats

for currentFile in glob.glob('*'):
    e1 = "zzz-";
    if currentFile.startswith(e1):
        os.remove(currentFile)

#########

# ajouter 1 ligne vide en ligne 1    

open (IN2 , "w").write (" \n" + open (IN1).read())  

##############################

# creation d'autant de fichiers que de lettres : a b ..

f1 = open(LETTRE , 'r')
for lettre in f1:
    lettre = lettre.strip()
#    print lettre

    f2 = open(IN2 , 'r')
    line2 = f2.readline()
    
    while 1:
        line2 = f2.readline()
        line2 = line2.rstrip()
        
        if not line2:
            break

        if line2.startswith(lettre):
            o = open("zzz-" + lettre + ".txt" , 'a')
            print line2
            print >> o , line2
            
# resultats : creation de 2 fichiers
# zzz-a.txt :
# abdicated
# abduct
# abducted

# zzz-b.txt :
# behaviour
# behind
# being

#%_3214

haut

Capturer des patterns d'une colonne et les ecrire dans des fichiers differents si ces patterns changent


#!/usr/bin/python

#@_3180y_creer_autant_de_fichiers_que_de_pattern_en_colonne_1!!openr_readlines_split

import os
import sys
import re
import glob
import time

IN="in.txt"

TIME=2


# IN :
# aboard  :  rigging aboard a vessel
# aboard  :  running rigging aboard a
# about  :  deciding about something
# about  :  understanding about settle
# about  :  wrapping about the body
# across  :  being situated across
# across  :  lying across a boat

#########

# deleter anciens resultats  (fichiers dont le nom commence par : prepo_)

for currentFile in glob.glob('*'):
    e1 = "prepo_";
    if currentFile.startswith(e1):
        os.remove(currentFile)

print "fichiers deletes"
time.sleep(TIME)

#########

# chaque prepo est ecrit ds 1 fichier different
# creation de fichiers (1 paragraphe = 1 fichier)

myFile = open (IN , 'r')
for line in myFile.readlines():

    x = line.split(" ")[0]
    o = open ("prepo_" + x + ".txt" , "a")     

    print >> o , line.strip()

myFile.close()

# resultat : 3 fichiers :
# prepo_aboard.txt
# aboard  :  rigging aboard a vessel
# aboard  :  running rigging aboard a

# prepo_about.txt
# about  :  deciding about something
# about  :  understanding about settle

# prepo_across.txt
# across  :  being situated across
# across  :  lying across a boat
#%_3180

haut

Capturer des paragraphes avec "IF IN"


#!/usr/bin/python

#@_3181y_creer_paragraphes!!forinopen_ifin

import os

LETTRE="1-lettre-a.txt"    # changer ici la lettre a , b  ....

# variables debut-fin des paragraphes
START1="\"pos\">verb"
END1=">noun"
END2="hom-subsec"

# chemins des repertoires
PATH="/Python27/0-0-2-collins-def-10-9"
PATHZ="/Python27/0-0-2-collins-def-10-9/Z-/"
PATHU = "/Python27/0-0-2-collins-def-10-9/U-/"

############

# contenu de LETTRE : (lettre = a)
# abide
# accept
# access

for id18 in open (LETTRE):
    id18=id18.strip()
    print id18

    id18b = "z-" + id18 + ".txt"
    print id18b

    os.chdir(PATHZ)

    flag=0
    for line in open (PATHZ + id18b):
        line=line.strip()
        if START1 in line:
            os.chdir(PATH)
            o = open ("y-" + id18 + ".txt" , "a")     
            flag=1
        if END1 in line or END2 in line:
            flag=0

        if flag == 1:
            print >> o , line
#%_3181

haut

Capturer des paragraphes avec choix sur le pattern de debut


#!/usr/bin/python

#@_3182y_creer_paragraphes!!readlines_startswith_ifin_readlines_flag_+=

# idlist.txt:
# ID

# details.txt:
# #ID10
# name:A
# class:9
# year:1985
# status=nill
# #WD12
# name:B
# class:X
# year:1987
# #ID20
# name:X
# class:X
# year:1983
# #ID90
# name:Y
# class:9
# year:1984
# #ID55
# name:Z
# class:X
# year:1985

# Required: Pull out the details of the students(from details.txt)
# who has passed the exam(whose ID is present in idlist.txt).

# script
flag = 0 ; c = 0

idlist = open ("idlist.txt").readlines()
idlist = [i.strip() for i in idlist]
detailslist = open ("details.txt").readlines()

for id in idlist:
    for lines in detailslist:
        lines=lines.strip()
        if lines.startswith("#") and id in lines:
            interface = lines
            flag = 1 ; c = c + 1
            fp = open (str(c) + "_" + interface  + ".txt" , "w")     
        if lines.startswith("#") and not id in lines:
            flag = 0
        if flag:
            print  >> fp , lines

# resultat : creation de 4 fichiers

# 1_#ID10.txt
#ID10
# name:A
# class:9
# year:1985
# status=nill

# 2_#ID20.txt
#ID20
# name:X
# class:X
# year:1983

# 3_#ID90.txt
#ID90
# name:Y
# class:9
# year:1984

# 4_#ID55.txt
#ID55
# name:Z
# class:X
# year:1985
#%_3182

haut

Capturer des paragraphes avec seulement un pattern de debut


#!/usr/bin/python

#@_3183y_creer_paragraphes_avec_seulement_1_pattern_de_debut!!openr_ifin_split_+=

START="1-extract.txt"

# START :
#C 1 CLIENT TOTAL
#File 1
#Data 1
#Data 2
#C 1 CLIENT TOTAL
#File 2
#Data 3
#Data 4
#C 1 CLIENT TOTAL
#File 3
#Data 5
#Data 6

# C 1 CLIENT TOTAL
# ^ ^    ^
# 0 1    2       # champs du split

flag=0
c=1
for line in open (START):
    line=line.strip()
    if "C 1" in line:
        filename = line.split(" ")[2] + str(c)
        o = open (filename , "w")      
        flag = 1
        c = c + 1
    if flag:
        print >> o , line

# resultat :
# creation de 3 fichiers :
#CLIENT1
#CLIENT2
#CLIENT3
#%_3183

haut

Capturer des paragraphes avec pattern de debut et de fin


#!/usr/bin/python

#@_3184y_creer_paragraphes_avec_pattern_de_debut_et_de_fin!!forinopen_startswith_split_flag

# contenu de in.txt
debug: on
max allowed connection: 3
tr#45
Starting: interface 78e23
Fan Status: On
Speed: -
sl no: 3431212-2323-90
vendor: aledaia
Stopping: interface 78e23
tr#90
newdebug received
Starting: interface 78e24
Fan Status: Off
Speed: 5670
sl no: 3431212-2323-90
vendor: aledaia
Stopping: interface 78e24
Starting: interface 68e73
Fan Status: On
Speed: 1200
sl no: 3431212-2323-90
vendor: aledaia
Stopping: interface 68e73
tr#99

flag=0;c=0
for line in open ("in.txt"):
    line=line.strip()
    if line.startswith("Stopping"):
	flag=0
	o.close()
    if line.startswith("Starting"):
	interface=line.split(" ")[2]
	flag=1;c=c+1
	o = open (interface+"_"+str(c)+".txt","w")     
    if flag and not line.startswith("Starting"):
	print >> o, line

# resultat
# contenu de : 78e23_1.txt
Fan Status: On
Speed: -
sl no: 3431212-2323-90
vendor: aledaia

# contenu de : 78e24_2.txt
Fan Status: Off
Speed: 5670
sl no: 3431212-2323-90
vendor: aledaia

# contenu de : 68e73_3.txt
Fan Status: On
Speed: 1200
sl no: 3431212-2323-90
vendor: aledaia
#%_3184

haut

Capturer des paragraphes avec pattern de debut et de fin et rstrip


#!/usr/bin/python

#@_3185y_creer_paragraphe!!startswith_flag_rstrip_split

IN="in.txt"

# IN :
# !@_file1
# format de sortie conserve
# choisir une des 2 lignes
# %
# !@_file2
# trier la liste
# apres une capture de paragraphes
# %


BEGIN="!@"
END="%"

flag=0 ; c=0
for line in open (IN):

    line=line.rstrip()     # format de sortie conserve avec rstrip()

    if line.startswith(BEGIN):
        interface=line.split(BEGIN)[1]
        flag=1;c=c+1
        o = open ("y" + str(c) + interface + ".txt" ,"w")    

    if line.startswith(END):
        print line
        print >> o, line
        flag=0

    if flag == 1:
        print line
        print >> o, line

# resultat : creation de 2 fichiers :
# y1_file1.txt :
# !@ file1
# format de sortie conserve
# choisir une des 2 lignes
# %

# y2_file2.txt :
# !@ file2
# trier la liste
# apres une capture de paragraphes
# %

#%_3185

haut

Inclure une commande BASH avec OS.SYSTEM


#!/usr/bin/python

#@_3186y_commande_bash_dans_python_capture_volume_place_disque!!ossystem_du_tail

import os

# commande 'du' pour chaque user : resultat de la taille finale (tail)
# creation d'1 fichier pour chaque user

fg = open(LISTUSERSSELECTION , 'r')

count=1
for i in fg:
    i = i.strip()           # user
    i2 = "/nfs/u/" + i      # /nfs/u/user

#    print i
    print "  --> " , count , "/" , linecount , " : " , i
    time.sleep(TIME)

    os.chdir(i2)

    os.system("du | tail -n1 >> /nfs/u/user/home/2-du-user-" + i + ".txt")

    count = count + 1
    print ""

# resultat :
#2-du-user-toto1.txt :
# 6342847

#2-du-user-toto2.txt :
# 310858

#%_3186

haut

Inclure une commande BASH avec GETSTATUSOUTPUT


#!/usr/bin/python

#@_3232y_commande_bash_dans_python!!getstatusoutput_split_forinif

import commands

(st, output) = commands.getstatusoutput('ls -a')

print [f for f in output.split('\n') if 'pattern' in f ]

# resultat : (liste des fichiers)
z-pattern1.txt z-pattern2.txt
#%_3232

haut

Envoyer un fichier sur un compte FTP


#!/usr/bin/python

#@_3229y_ftp_fichier_sur_un_compte_ftp!!ftplib_storbinary_uneSessionFTP

import ftplib
uneSessionFTP = ftplib.FTP( host = 'mylost' ,
                            user = 'myuser' ,
                            passwd = 'mypasswd' )

unFichier = open('toto.txt' , 'rb')
uneSessionFTP.storbinary( 'STOR toto.txt' , unFichier )
unFichier.close()
uneSessionFTP.quit()

#%_3229

haut

Envoyer un mail contenant le texte d'un fichier (sans piece attachee)


#!/usr/bin/python

#@_3230y_mail_envoyer_texte_fichier_a_interieur_du_mail!!MIMEText_smtplib_login_sendmail

import smtplib

FILETOSEND="in.txt"

from email.MIMEText import MIMEText

def envoyer(data="none"):
    print "Message en preparation...."
    de = "user1 <prenom.nom@hotmail.fr>"
    pour = "user2 <prenom.nom@hotmail.fr>"


    monFichierMail = open(FILETOSEND , 'rb')
    mail = MIMEText(monFichierMail.read())
    monFichierMail.close()

    mail['From'] = de
    mail['Subject'] = "Test : Envoyer"
    mail['To'] = pour
    username = 'prenom.nom@hotmail.fr'     # votre login ici
    password = 'password'            # votre password ici
    
    smtp = smtplib.SMTP('smtp.live.com:25')
    smtp.starttls()
    smtp.login(username,password)    # ici laisser telquel
    smtp.sendmail(de, [pour], mail.as_string())
    smtp.close()
    print "Message envoye !"
envoyer()

#%_3230

haut

Envoyer un mail contenant une piece attachee (texte-image-audio)


#!/usr/bin/python

#@_3231y_mail_envoyer_fichier_en_piece_attachee!!MIMEMultipart_mimetypes

import smtplib
import mimetypes
from email.mime.multipart import MIMEMultipart
from email import encoders
from email.message import Message
from email.mime.audio import MIMEAudio
from email.mime.base import MIMEBase
from email.mime.image import MIMEImage
from email.mime.text import MIMEText

fileToSend = "example1.txt"

emailfrom = "prenom.nom@hotmail.fr"
emailto = "prenom.nom@hotmail.fr"

username = "prenom.nom@hotmail.fr"
password = "yourpassword"

msg = MIMEMultipart()
msg["From"] = emailfrom
msg["To"] = emailto
msg["Subject"] = "help I cannot send an attachment to save my life"
msg.preamble = "help I cannot send an attachment to save my life"

ctype, encoding = mimetypes.guess_type(fileToSend)
if ctype is None or encoding is not None:
    ctype = "application/octet-stream"

maintype, subtype = ctype.split("/", 1)

if maintype == "text":
    fp = open(fileToSend)
    # Note: we should handle calculating the charset
    attachment = MIMEText(fp.read(), _subtype=subtype)
    fp.close()
elif maintype == "image":
    fp = open(fileToSend, "rb")
    attachment = MIMEImage(fp.read(), _subtype=subtype)
    fp.close()
elif maintype == "audio":
    fp = open(fileToSend, "rb")
    attachment = MIMEAudio(fp.read(), _subtype=subtype)
    fp.close()
else:
    fp = open(fileToSend, "rb")
    attachment = MIMEBase(maintype, subtype)
    attachment.set_payload(fp.read())
    fp.close()
    encoders.encode_base64(attachment)
attachment.add_header("Content-Disposition", "attachment", filename=fileToSend)
msg.attach(attachment)

server = smtplib.SMTP("smtp.live.com:25")
server.starttls()
server.login(username,password)
server.sendmail(emailfrom, emailto, msg.as_string())
server.quit()

#%_3231

haut

ITERTOOLS : generateur de imap ifilter chain groupby takewhile dropwhile


#!/usr/bin/python

#@_3212y_itertools_operations_math!!carre_lambda_xrange_imap_ifilter_pair_chain_groupby_takewhile_dropwhile

from itertools import imap , ifilter , ifilterfalse
from itertools import chain
from itertools import groupby
from itertools import takewhile, dropwhile
from itertools import *

# itertools fournit des generateurs : imap , ifilter , ifilterfalse , chain , groupby ...

# imap

carre = lambda n: n ** 2
imap(carre , xrange(5))   # renvoie 1 generateur
print list(imap(carre , xrange(5)))          # [0, 1, 4, 9, 16]

for elem in imap(carre , xrange(5)):  # recuperer elements
    print elem         # idem mais 1 string par ligne

##############

# ifilter   et   ifilterfalse

pair = lambda n: n % 2 == 0
print list(ifilter(pair , xrange(10)))         # [0, 2, 4, 6, 8]
 
print list(ifilterfalse(pair , xrange(10)))         # [1, 3, 5, 7, 9]

####################################

# chain

print list(chain(xrange(5) , xrange(8 , 11) , xrange(14 , 18)))

# resultat :
# [0, 1, 2, 3, 4, 8, 9, 10, 14, 15, 16, 17]

#######

for i in chain([1, 2], ['a', 'b']):
    print i

# resultat
# 1
# 2
# a
# b

#################################

# islice

# Stop at 3 :
for i in islice(count(), 3):
    print i

# resultat
# 0
# 1
# 2

########

# By tens to 30 :
for i in islice(count(), 0, 30, 10):
    print i

# resultat
# 0
# 10
# 20

#################################

# groupby

IN="4-in.txt"        # 1 colonne - 1 string par ligne

# IN :
# a
# b
# a
# c
# d
# d
# b
# c
# a
# d

mylist = open(IN).read().splitlines()
mylist2 = sorted(mylist)

for element , iterateur in groupby(mylist2):
    print "%s est repete %d fois" % (element , len(list(iterateur)))

# resultat :
# a est repete 3 fois
# b est repete 2 fois
# c est repete 2 fois
# d est repete 3 fois

#############################

# takewhile - dropwhile

print list(takewhile(lambda i: i < 10, xrange(20)))         # On prend tant que i < 10
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print list(dropwhile(lambda i: i < 10, xrange(20)))         # On jette tant que i < 10
# [10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

#%_3212

haut

YIELD : raccourcit le temps d'execution d'un script


#!/usr/bin/python

#@_3208_capture_mots_selon_leur_longueur_yield!!fonction_oslistdir_split_len_yield

import os
import time

start = time.time()

PATH="/Python27/tests-2017-10"

OUT1="result-with-yield.txt"

#NOREP="OLD"

LIMIT=5

##############

# 1/2_ with yield  ---> more than 2 times faster

def extraire_mots(PATH):

    for fichier in os.listdir(PATH):
#    print fichier
        if not "SAUV-scripts-from-cgg-py" in fichier:  # and not NOREP in fichier:    # retirer les repertoires
        
            with open(os.path.join(PATH, fichier)) as f:
                for ligne in f:
                    for mot in ligne.split():
                        if len(mot) == LIMIT and mot.startswith("s"):
                            yield mot
    
for mot in extraire_mots(PATH):
    pass

print "script running with 'yield' : it took : " , time.time()-start , "seconds"

#########################################

# 2/2_ without yield

fw1 = open(OUT1 , 'w')

for fichier in os.listdir(PATH):

    if not "colorama" in fichier and not "psutil" in fichier:    # retirer les repertoires
    
        with open(os.path.join(PATH, fichier)) as f:
            for ligne in f:
                for mot in ligne.split():
                    if len(mot) == LIMIT and mot.startswith("s"):
#                        print mot
                        fw1.write(mot + "\n")
fw1.close()    

print "script running without 'yield' : it took : " , time.time()-start , "seconds"

# resultat : mots de 5 digits commencant par un 's'
# script running with 'yield' : it took :   2,5 seconds
# script running without 'yield' : it took :   4,8 seconds

#%_3208

haut

YIELD genere un compteur (exemple 1)


#!/usr/bin/python

#@_3211y_count_controle_depart_arrivee!!while_yield_break

def countfrom(x):
    while True:
        yield x
        x += 1
        
for n in countfrom(10):
    print n
    if n > 16:
        break
                
# resultat :
# 10
# 11
# 12
# 13
# 14
# 15
# 16
# 17

#%_3211

haut

YIELD genere un compteur (exemple 2)


#!/usr/bin/python

#@_3210y_count_avec_saut_de_valeurs!!yield_while_send

def compteur(x):
    n = 0
    while n <= x:
        v = (yield n)

        if v is not None:
            n = v
        else:
            n += 1

gen = compteur(10)
for i in gen:
    print i
    # Si on en est a 15, on veut passer directement a 18
    if i == 4:
        gen.send(6)

# resultat
# 0
# 1
# 2
# 3
# 4
# 7
# 8
# 9
# 10

#%_3210

haut

LAST modification : NOVEMBER 2017