Les scripts PYTHON

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

LE CUMUL D'UNE COLONNE
  1. Cumuler les valeurs d'une colonne d'un seul fichier (+ ecriture 1 seul fichier)
  2. Cumuler les valeurs d'une colonne de plusieurs fichiers (+ ecriture multi fichiers)
  3. Cumuler les occurrences d'un pattern pour chaque ligne et totaliser
  4. 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
LA LIGNE : inserer - ajouter
  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. Ajouter une ligne au debut ou la fin d'un fichier
  5. Ajouter une ligne a la fin de plusieurs fichiers
  6. Ajouter un meme chiffre a toutes les fins de lignes
  7. Ajouter du texte en debut ou fin de ligne
  8. 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 _ part1
  4. Marquer nombre lignes a l'interieur de paragraphes _ part2
  5. Habillage pour capture des infos sur les lignes des paragraphes _ part3
  6. Cloner une portion de ligne titree et la repeter au debut de plusieurs lignes (exemple1)
  7. Cloner une portion de ligne titree et la repeter (sur un seul fichier) (exemple2)
  8. Cloner une portion de ligne titree et la repeter (sur plusieurs fichiers) (exemple3)
  9. Grouper toutes les lignes ayant meme colonne 1 (d'1 seul fichier)
  10. Grouper toutes les lignes ayant meme colonne 1 (de plusieurs fichiers)
  11. Grouper toutes les lignes sur une seule ligne (de plusieurs fichiers)
  12. 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 (listdir - 2 boucles)
  4. Capturer lignes dans plusieurs fichiers en excluant patterns (match)
  5. Coller nom fichier devant lignes (sortie plusieurs fichiers) (replace - split - if in)
  6. Capturer patterns dans plusieurs fichiers (sortie 1 seul fichier) (if in - replace - split)
  7. Capturer patterns dans plusieurs fichiers (boucle sur des mots dans 1 fichier) (search)
  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
  3. Capturer un pattern avec endswith
  4. 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 (read splitlines - range len)
LA LIGNE : supprimer
  1. Supprimer des fins de fichiers a partir d'1 pattern
  2. Supprimer un blanc au debut ou fin de ligne
  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. Capture des colonnes 1 et 2
  2. Capture de l'avant derniere et derniere colonne
  3. Ajouter un meme texte devant toutes les lignes (en colonne)
LE TABLEAU
  1. Rechercher une extension dans une liste de fichiers (selection d'une colonne)
  2. Capturer une ligne et la modifier avec un tableau (selection d'une ligne)
CE QUE PERMET L'OUVERTURE "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)
CE QUE PERMET L'OUVERTURE "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 L'OUVERTURE "WHILE LINE" EN LECTURE LIGNE PAR LIGNE
  1. Ce que "WHILE LINE" permet de faire : lecture ligne par ligne d'un fichier
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 (exemple1 court)
  2. Afficher les occurrences uniques dans une colonne (exemple2 long)
LES OCCURRENCES D'UN PATTERN
  1. Capturer une ligne avec choix du pattern et de son occurrence
  2. Maitriser le nombre de champs pour chaque ligne
  3. Compter nombre de mots pour chaque ligne (et l'ecrire en fin de ligne)
  4. Compter occurrences d'un pattern pour chaque ligne - exemple 1
  5. Compter occurrences d'un pattern pour chaque ligne - exemple 2
  6. Compter les occurrences de chaque mot d'un fichier : methode 1
  7. Compter les occurrences de chaque mot d'un fichier : methode 2
  8. Compter les occurrences de chaque mot d'un fichier : methode 3
  9. Indiquer le numero de chaque ligne qui suit un titre
  10. Cumuler les occurrences d'un pattern d'un fichier et ecrire ce chiffre en fin de ligne
  11. Indiquer les positions d'un pattern
CONCATENER
  1. Exemples de syntaxes pour concatener
  2. Concatener 2 fichiers (join - readlines)
  3. Concatener 2 fichiers (read)
  4. Concatener une serie avec listdir
  5. Concatener une serie contenue dans un fichier
  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 et sous repertoires (equivalent a xargs en BASH)
  2. Rechercher une syntaxe dans des fichiers
  3. 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
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
READ A FILE LINE BY LINE
  1. Pour numeroter les lignes d'un fichier
  2. Pour numeroter les lignes de plusieurs fichiers (avec concatenation)
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)
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 (exemple 1)
  3. Renommer plusieurs fichiers (exemple 2)
REMOVE
  1. Deleter un fichier (exemple 1)
  2. Deleter un fichier (exemple 2)
  3. Deleter un fichier s'il est vide
PARAGRAPHE
  1. Capturer des patterns d'une colonne et les ecrire dans des fichiers differents si ces patterns changent
  2. Capturer des paragraphes avec "IF IN"
  3. Capturer des paragraphes avec choix sur le pattern de debut
  4. Capturer des paragraphes avec seulement un pattern de debut
  5. Capturer des paragraphes avec pattern de debut et de fin
  6. Capturer des paragraphes avec pattern de debut et de fin et rstrip
OS.SYSTEM
  1. Inclure une commande BASH dans OS.SYSTEM

haut

Cumuler les valeurs d'une colonne d'un seul fichier (+ ecriture 1 seul fichier)


#!/usr/bin/python

#@_1137y_count_cumul_colonne_de_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

#%_1137

haut

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


#!/usr/bin/python

#@_1151y_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

#%_1151

haut

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


#!/usr/bin/python

#@_1123y_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  @%@  #@_y_capture_pattern_!!withopen_finditer_startswith_replace_format

# z.txt  %  replace  @%@  1  @%@  #@_y_capture_pattern
# z.txt  %  replace  @%@  2  @%@  line = line.replace("#@_" , "y-").replace("\n" , "")
# 3

#%_1123

haut

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


#!/usr/bin/python

#@_1001y_count_cumul_des_valeurs_d_1_colonne_avec_remise_a_zero!!voir_x

import sys
import os
import time
from itertools import count
import subprocess
from sys import argv
import commands
import io
import shutil
import glob
import linecache
import fileinput
import re


START="/path_of_file/0-start-orig.txt"
LIMIT=150
LOOPNB=6
TIME=1


# START
# 12
# 80
# 22
# 58
# 13
# 66
# 13
# 16
# 18
# 92
# 70
# 53

#+_1001a_deleter_anciens_fichiers!!glob_startswith_osremove
for currentFile in glob.glob('*'):
    el = "2-start-cumul-";
    if currentFile.startswith(el):
        os.remove(currentFile)
#-
for currentFile in glob.glob('*'):
    em = "2-out-";
    if currentFile.startswith(em):
        os.remove(currentFile)

##########
# copier l'original et creer un fichier de depart
#+_1001b_creer_copie-de_fichier!!shutil_copy2
shutil.copy2(START, '2-start-cumul-1.txt')
#-

print "fichier depart cree ok"
time.sleep(TIME)

#+_1001c_count_cumul_de_colonne!!while_withopen_+=_int_format_withopen_readlines_join
i = 1    
while i < LOOPNB:
    print "---> depart de la boucle : valeur de i : ", i
    result = 0

    with open("2-start-cumul-" + str(i) + ".txt", 'r') as f:    #read
        with open("2-out-1.txt", "a") as g:                    #write
            for line in f:
                result += int(line)
                if result < LIMIT:
                    print "contenu de result : " , result
                    g.write("{0}\n".format(result))
                else:
                    break

    g.close()
    f.close()

    with open('2-out-1.txt', 'r') as h:    #read
        var = sum(1 for _ in h)
        print "nb lignes ds 2-out-1.txt : ", var

    readFile = open ("2-start-cumul-1.txt", 'r')    #read
    with open("2-start-cumul-" + str(i + 1) + ".txt", 'w') as m:     #write
        lines = readFile.readlines()
        print "reste du fichier a cumuler (en liste) : " , lines[var:]
        new = ''.join(lines[var:])
        print "reste du fichier a cumuler (en string) : \n" , new        
        m.write(new)

    readFile.close()
    m.close()
    h.close()

    time.sleep(TIME)

    i += 1   
#-
###########################
# attention mettre un nombre de digit egal pour toutes les valeurs
print " ---> habillage"
print ""
#+_1001d_ajouter_0_pour_avoir_3_digits!!withopen_zfill

with open("2-out-1.txt", 'r') as p:     #read
    fd = open ("2-out-2.txt", 'w')    #write
    for s in p:
        print s.zfill(4).strip()
        fd.write(s.zfill(4))
p.close()   
fd.close()
#-

# partie bonne uniquement si les nombres ont tous le meme nombre de digits
# ajouter un trait de separation entre les cumuls remis a zero
print " ---> resultat"
print ""

#+_1001e_ajouter_ligne_au_debut!!withopen_readline_seek

with open("2-out-2.txt", "r+") as fadd:     #read
    first_line = fadd.readline()
    if first_line != "----------\n":
        lines = fadd.readlines()
        fadd.seek(0)
        fadd.write("----------\n")
        fadd.write(first_line)
        fadd.writelines(lines)   

fadd.close()
#-
###############

#+_1001f_creer_fichiers_vides_cibles!!close

open ("2-out-3.txt", 'a').close()   #close
open ("2-out-4.txt", 'a').close()   #close
print "--> ok fichiers cible crees"
time.sleep(TIME)
#-
#################

#+_1001g_inserer_trait_separation!!while_linecache_getline_O_WRONLY_+=

# bien fermer les anciens buffers
# redirection de stdout dans ficher : 2-out-3.txt

from os import open, close, dup, O_WRONLY

old = dup(1)
close(1)

u = 1
while u <= 20:
    
    retrieved_line = linecache.getline("2-out-2.txt", u)    
    retrieved_line2 = linecache.getline("2-out-2.txt", u + 1)    
        
    open ("2-out-3.txt", O_WRONLY)    #O_WRONLY
    
    if retrieved_line2 < retrieved_line:
        print retrieved_line.strip() , "\n----------"

    else:
        print retrieved_line.strip()

    u += 1

close(1)
dup(old) # should dup to 1
close(old) # get rid of left overs

print "--> ok traits de separation"
time.sleep(TIME)
#-
####################

#+_1001h_deleter_lignes_vides!!fileinput

for line in fileinput.FileInput("2-out-3.txt",inplace=1):
    if line.rstrip():
        print line.strip()

print "--> ok lignes vides supprimees"
time.sleep(TIME)
#-
############

#+_1001i_deleter_derniere_ligne!!readlines_startswith_del_writelines

lines = file("2-out-3.txt", 'r').readlines() 
one = lines[-1]       # la derniere ligne
if one.startswith("----------"):
    print lines[-1]
    del lines[-1] 
    file("2-out-3.txt", 'w').writelines(lines) 

else:
    print "attention la derniere ligne n'est pas -----; donc n'a pas ete effacee"

# file.close()
#-
print "--> ok derniere ligne supprimee"
time.sleep(TIME)

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

#+_1001j_rediriger_sortie_ecran_dans_1_fichier!!readlines_WRONLY_search

old = dup(1)
close(1)

c = 1
search_term = "----------"

road = file("2-out-3.txt", 'r').readlines() 
for line in road:
    open ("2-out-4.txt", O_WRONLY)    #O_WRONLY
    if re.search(search_term, line):
        print line.strip() , c
        c = c + 1
    else:
        print line.strip()

close(1)
dup(old) # should dup to 1
close(old) # get rid of left overs

print "--> ok resultat dans : 2-out-4.txt"
#-
##################    
# resultat
# ---------- 1
# 012
# 092
# 114
# ---------- 2
# 058
# 071
# 137
# ---------- 3
# 013
# 029
# 047
# 139
# ---------- 4
# 070
# 123
#%_1001

haut

Numeroter les lignes d'un fichier


#!/usr/bin/python

#@_1002y_count_numeroter_lignes_d_1_fichier!!voir_x

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

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

#+_1002a_count_numeroter_lignes_d_1_fichier_exemple1!!while_openr_split_join_+=

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

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)      #read
    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

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

#+_1002b_count_numeroter_lignes_d_1_fichier_exemple2!!openr_readlines_int_len_while_str_join_+=
print "---------"

file = open (IN,"r")   #read

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

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

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

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

count = 1
f = open (IN,"r")     #read
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
#%_1002

haut

Compter le nombre de mots d'un fichier


#!/usr/bin/python

#@_1003y_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')    #read
fw = open('out.txt' , 'w')    #write

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
#%_1003

haut

Compter le nombre de lignes de plusieurs fichiers


#!/usr/bin/python

#@_1144y_count_nombre_lignes_plusieurs_fichiers!!forin_split_forin_splitlines_str_join

# exemple fichier1 :
# line1
# line2

# exemple fichier2 :
# data1
# data2
# data3

os.chdir(PATHHOME)
for id23 in open(LISTEFICHIERS):
    id23=id23.strip()
    id23b=id23.split("-")[1].split(".")[0]
#    print id23b

    f24 = open(OUT , "a")
    
    os.chdir(PATHWHEREAREFILES)
    linecount=0
    f23 = open(id23 , 'r')
    for lines in f23:
        w = lines.splitlines()
        linecount=linecount+len(w)
    f23.close()        
#    print id23b , str(linecount)    
    road = id23b , str(linecount)
    road2 = ' '.join(road)
    os.chdir(PATHHOME)
    f24.write(road2 + "\n")

f24.close()
# resultat :
# 2
# 3

#%_1144

haut

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


#!/usr/bin/python

#@_1183y_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:     #read
    fd3 = open (RESULT6 , 'w')     #write
    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 . 

#%_1183

haut

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


#!/usr/bin/python

#@_1004y_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:     #read
    fd3 = open ("out.txt" , 'w')     #write
    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

#%_1004

haut

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


#!/usr/bin/python

#@_1005y_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")     #read  #write

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

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

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

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
# --------------------------------------
#%_1005

haut

Ajouter une ligne a la fin ou debut d'un fichier


#!/usr/bin/python

#@_1141y_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

#%_1141

haut

Ajouter une ligne a la fin de plusieurs fichiers


#!/usr/bin/python

#@_1006y_ajouter_ligne_a_la_fin_de_inoutplusieursfichiers!!openr_withopen_forinif

# liste-z.txt :
# file1.txt
# file2.txt

# file1.txt
# line1 datafile1
# line2 datafile1

# file2.txt
# line1 datafile2
# line2 datafile2

fz = open ("liste-z.txt" , 'r')    #read
for roadz in fz:
    roadz = roadz.strip()
    print roadz
    
    with open(roadz) as input:      #read
        lines = [line for line in input if line.strip()]
    
    with open("y-" + roadz , "w") as output:      #write
        for line in lines:
            output.write(line)
        output.write("end end")   
input.close()
output.close()

# resultat :

# y-file1.txt
# line1 datafile1
# line2 datafile1
# end end

# y-file2.txt
# line1 datafile2
# line2 datafile2
# end end

#%_1006

haut

Ajouter un meme chiffre a toutes les fins de lignes


#!/usr/bin/python

#@_1157y_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

#%_1157

haut

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


#!/usr/bin/python

#@_1008y_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:      #read
    town = open (OUT , "w")     #write
    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   @!!@
#%_1008

haut

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



#!/usr/bin/python

#@_1165y_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:     #read
    fd4b = open (FREQ3 , "w")     #write
    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
#%_1165

haut

Coller pattern unique inoutplusieursfichiers a colonne mots differents


#!/usr/bin/python

#@_1167y_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()

#%_1167

haut

Coller pattern devant chaque ligne


#!/usr/bin/python

#@_1168y_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.

#%_1168

haut

Marquer un titre et le repeter sur lignes suivantes_part1


#!/usr/bin/python

#@_1009y_ajouter_cloner_titre_et_le_repeter_sur_lignes_suivantes!!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

#+_1009a_ajouter_lignes_end_a_la_fin_d_1_fichier!!write_read
open (FILE2 , "w").write( open (FILE1).read() + "end\nend\n")    #read   #write
#-

# script

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

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

#%_1009

haut

Marquer nombre lignes a l'interieur de paragraphes_part2


#!/usr/bin/python

#@_1010y_count_numero_lignes_dans_paragraphes_+_remise_a_zero!!readlines_range_len_str_join

FILE3="1-array-1g.txt"
FILE4="1-array-1h.txt"
FILE5="1-array-1j.txt"
FILE6="1-array-1k.txt"

# FILE3 : (suite de part1)
# 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


# retirer la derniere ligne du fichier

#+_1010a_deleter_derniere_ligne_d_1_fichier!!readlines_del_writelines
f1 = open (FILE3 , 'r').readlines()      #read
del f1[-1]   # 
open (FILE4 , 'w').writelines(f1)      #write
#-

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

# renommer   ": end"  en  "grec"

#+_1010b_renommer_pattern!!withopen_replace
with open (FILE4 , 'r') as road:    #read
    fd = open (FILE5 , 'w')      #write
    for ligne in road:
        ligne = ligne.replace(" : end", " grec")
        print ligne.strip()
        fd.write(ligne)
fd.close()
road.close()
#-
print "----------------------"

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

#+_1010c_count_numero_lignes_dans_paragraphes_+_remise_a_zero!!readlines_range_len_ifin_join

fp = open (FILE5 , "r").readlines()     #read
fw = open (FILE6 , "w")     #write

for line in range(len(fp)):
    l = 0
    if "grec" in fp[line]:
        c=0

#    print c , " % " , fp[line+l].strip()
    m1 = str(c)
    m2 = m1 , " % " , fp[line+l].strip()
    m3 = ''.join(m2)
    print ''.join(m2)
    fw.write(m3 + "\n")
    l=l+1
    c=c+1    
fw.close()
#-
# resultat :
# 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
#%_1010

haut

Habillage pour capture des infos sur les lignes des paragraphes_part3


#!/usr/bin/python

#@_1011y_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"

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

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)]     #read

f3 = open (FILE8 , 'w')    #write

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

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

f5 = open (FILE9 , 'w')    #write   # 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

#%_1011

haut

Degrouper : coller la colonne 1 a chaque autre colonne


#!/usr/bin/python

#@_1159y_degrouper_coller_col1_aux_autres_col!!read_splitlines_split

# in.txt
# line1481@ writes    writing    writing -
# line1483@ zips  zipping    zipped - -


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@ writing
# line1481@ -
# line1483@ zips
# line1483@ zipping
# line1483@ zipped
# line1483@ -
# line1483@ -

#%_1159

haut

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


#!/usr/bin/python

#@_1012y_capture_titre_et_le_marquer_sur_lignes_suivantes!!readlines_range_len_split

# ajouter 2 lignes a la fin du fichier:

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

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

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

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
#%_1012

haut

Cloner une portion de ligne titree et la repeter (sur 1 seul fichier) (exemple 2)


#!/usr/bin/python

#@_1013y_ajouter_cloner_titre_et_le_repeter_sur_1_seul_fichier!!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()     #read
fd15 = open (RESULT15 , "w")    #write

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
#%_1013

haut

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


#!/usr/bin/python

#@_1138y_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

#%_1138

haut

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


#!/usr/bin/python

#@_1158y_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")    #write
for line31 in open ("in.txt"):     #read
#    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 - - -

#%_1158

haut

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


#!/usr/bin/python

#@_1014y_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")    #write
for w in open (LISTE):     #read
    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
#%_1014

haut

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


#!/usr/bin/python

#@_1015y_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)       #read
fw = open ("out.txt" , "w")     #write

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

        with open(file) as f2:    #read
            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 
#%_1015

haut

Lire 2 lignes apres chaque apparition d'1 marqueur


#!/usr/bin/python

#@_1184y_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

#%_1184

haut

Lire premiere et derniere ligne


#!/usr/bin/python

#@_1171y_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

#%_1171

haut

Lire la ligne numero 1


#!/usr/bin/python

#@_1016y_lire_la_ligne_numero_1!!openr_range_next_readlines

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

# exemple 1 :

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

# exemple 2 :

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

# resultat :
# line 1 data1
#%_1016

haut

Lire la ligne 3 en partant de la fin


#!/usr/bin/python

#@_1017y_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')    #read
fw = open ("out.txt" , "w")     #write
my_list = infile.read().splitlines()

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

# resultat :
# line 2 data2
#%_1017

haut

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


#!/usr/bin/python

#@_1169y_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

#%_1169

haut

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


#!/usr/bin/python

#@_1150y_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

#%_1150

haut

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


#!/usr/bin/python

#@_1166y_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()      #read 

with open("1-start.txt") as oldfile:        #read
    newfile = open ("1-out.txt" , 'w')     #write
    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.

#%_1166

haut

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


#!/usr/bin/python

#@_1182y_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()      #read 

with open(STARTDICO) as oldfile:        #read
    newfile = open (SEARCH3 , 'w')     #write
    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

#%_1182

haut

Capturer un pattern dans plusieurs fichiers (listdir - 2 boucles)


#!/usr/bin/python

#@_1018y_capture_pattern_inplusieursfichiers!!oslistdir_ifin_withopen_replace_ifin

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

f1 = os.listdir(PATHHOME)
fw = open (OUT , "w")     #write

for file in f1:
    if "uyz" in file:
        with open(file) as f2:    #read
            for line in f2:
                line = line.replace("Timing error<1.5ms" , "")\
                .replace("Missfire" , "")\
                .replace("disabled" , "")\
                .replace("autofire" , "")
                               
                if "SP" in line or "shot" in line or "Shot" in line:
                    print line.strip()
                    fw.write(line)

fw.close()
f2.close()

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

#%_1018

haut

Capturer lignes dans plusieurs fichiers en excluant patterns (match)


#!/usr/bin/python

#@_1019y_capture_lignes_inoutplusieursfichiers_avec_condition!!openr_readlines_forinif_match_join

fr = open (LISTYTRIE , 'r')     #read
for roady in fr:
    roady = roady.strip()

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

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

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

#%_1019

haut

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


#!/usr/bin/python

#@_1128y_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

#%_1128

haut

Capturer patterns dans plusieurs fichiers (sortie 1 seul fichier) (if in - replace - split)


#!/usr/bin/python

#@_1129y_capture_pattern_inplusieursfichiers!!oslistdir_forinopen_replace_split_join

import os
import re
import time

TIME=1

# BUT : comparer id1 (nom du fichier) et line1 (contenu du fichier)
# recherche de la ligne avec "if in"

LISTTOTALZ="1-0-liste-z.txt"

PATHHOME="/nfs/u/trotigno/tests-10-collins"     
PATHZ="/nfs/u/trotigno/tests-10-collins/Z-new"     

OUT="1-0-verif-nom-code.txt"

# exemple de 'id1' :
# equiv="X-UA-Compatible" content="IE=edge" />
# equiv="content-language" content="en">
# jeopardize | Definition, meaning & more | Collins Dictionary
# content="jeopardize | Definition, meaning & more | Collins Dictionary">

###########

# liste des verbes z-

os.chdir(PATHHOME)
fz = open(LISTTOTALZ , "w")
filenamez = os.listdir(PATHZ) 
for filez in filenamez:

    mz = re.search("z-" , filez)
    if mz:
#        print filez.strip()
        os.chdir(PATHHOME)
        fz.write(filez + "\n")

fz.close()

print " ---> ok liste verbes z- : " , LISTTOTALZ
print ""
time.sleep(TIME)


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

# verif des noms et des contenus des fichiers

chaine = "| Definition, meaning & more | Collins Dictionary"


f2 = open(OUT , 'w')
for id1 in open(LISTTOTALZ):
    id1 = id1.strip()
#    print id1
    
    os.chdir(PATHZ)
    for line1 in open(id1 , "r"):
        if chaine in line1:
            line1 = line1.strip()
            line1 = line1.replace(" | Definition, meaning & more | Collins Dictionary" , "") \
            .replace("z-" , "").replace("title" , "")
            id1b = id1.split("-")[1].split(".")[0]
#            print id1b , line1
            
            total = id1b , " " , line1
            total2 = ''.join(total)
            total2a = total2.split(" ")[0]
            total2b = total2.split(" ")[1]
            if total2a != total2b:
                print "   ---> attention des fichiers sont a refaire :"
                print total2a , " : nom du fichier <--- NO ---> contenu du fichier : " , total2b
                total3 = total2a , " : nom du fichier <--- NO ---> contenu du fichier : " , total2b
                total4 = ''.join(total3)
                f2.write(total4 + "\n")
            
f2.close()

print " ---> ok verif des noms et des contenus des fichiers ds : " , OUTVERIF
time.sleep(TIME)

# resultat
# bargain : nom du fichier <--- NO ---> contenu du fichier : bare
# jeopardise : nom du fichier <--- NO ---> contenu du fichier : jeopardize
# lap : nom du fichier <--- NO ---> contenu du fichier : land
# mount : nom du fichier <--- NO ---> contenu du fichier : Mount
# impair : nom du fichier <--- NO ---> contenu du fichier : impact

#%_1129

haut

Capturer patterns dans plusieurs fichiers (boucle sur des mots dans 1 fichier) (search)


#!/usr/bin/python

#@_1140y_capture_pattern_inplusieursfichiers!!read_split_oslistdir_withopen_search_format_join

import os
import re

PATH="Python27/rep"

# fichier contenant 1 mot par ligne qui sera lu ligne par ligne :
KEY="1-key.txt"

##########

# rechercher dans plusieurs fichiers si des mots de KEY existent

keyfile = open(KEY).read().split()

f1 = os.listdir(PATH)
for j in keyfile:
    for file1 in f1:
        if file1.startswith("z-"):
            with open(file1 , 'r') as fd2:
                for line1 in fd2:
                    select = re.search("^" + j + "\W" , line1)
                    if select:
                        code = "{0}".format(select.group(0))
                        element = file1 , code , " % " , line1.strip()
                        print ''.join(element)
fd2.close()

#%_1140

haut

Selectionner des lignes contenant 3 espaces avec search


#!/usr/bin/python

#@_1020y_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:     #read
    fd = open (OUT , 'w')      #write
    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    
#%_1020

haut

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


#!/usr/bin/python

#@_1021y_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="/nfs/u/trotigno/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:       #read
    fd = open (OUT1 , 'w')     #write
    for line in fr:

        regex = m

        for i in re.finditer(regex, line):
            if line.startswith("#@_"):
                
                line = line.replace("#@_" , "y-").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)
#%_1021

haut

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


#!/usr/bin/python

#@_1022y_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:     #read
    fd = open (OUT, 'w')     #write
    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   
#%_1022

haut

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


#!/usr/bin/python

#@_1023y_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:    #read
    fd1 = open (OUTUK, 'w')     #write
    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
#%_1023

haut

Remplacer la derniere occurrence d'un pattern dans un fichier


#!/usr/bin/python

#@_1024y_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')      #read
fwhab10 = open (INTER10 , 'w')     #write
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
#%_1024

haut

Verifier dans plusieurs fichiers si la derniere ligne contient 1 pattern


#!/usr/bin/python

#@_1025y_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')     #read
for roadv in fv:
    roadv = roadv.strip()

    infile = open (roadv , 'r')     #read
    fwv = open (OUT , "a")      #write
    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
#%_1025

haut

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


#!/usr/bin/python

#@_1163y_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

#%_1163

haut

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


#!/usr/bin/python

#@_1173y_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()     #read
fd15 = open (RESULT15 , "w")    #write

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

#%_1173

haut

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


#!/usr/bin/python

#@_1174y_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

#%_1174

haut

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


#!/usr/bin/python

#@_1175y_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.

#%_1175

haut

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


#!/usr/bin/python

#@_1176y_marquer_titre_range_len=1009!!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

#+_1009a_ajouter_lignes_end_a_la_fin_d_1_fichier!!write_read
open (FILE2 , "w").write( open (FILE1).read() + "end\nend\n")    #read   #write
#-

# script

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

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

#%_1176

haut

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


#!/usr/bin/python

#@_1177y_marquer_titre_range_len=1012!!readlines_range_len_split

# ajouter 2 lignes a la fin du fichier:

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

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

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

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
#%_1177

haut

Marquer un titre devant toutes les lignes (read splitlines - range len)=1148


#!/usr/bin/python

#@_1178y_marquer_titre_range_len=1148!!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")    #read   #write

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

#%_1178

haut

Supprimer des fins de fichiers a partir d'1 pattern


#!/usr/bin/python

#@_1179y_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

#%_1179

haut

Supprimer un blanc au debut ou fin de ligne


#!/usr/bin/python

#@_1026y_deleter_blanc_au_debut_ou_fin_de_ligne!!readlines_sorted_set_sub

basket = open (CONCAT3).readlines()      #read
f6 = open (CONCAT4 , 'w')      #write

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()   
#%_1026

haut

Supprimer le dernier mot de chaque ligne


#!/usr/bin/python

#@_1027y_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()     #read
fw3 = open ("out.txt" , "w")     #write
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

#%_1027

haut

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


#!/usr/bin/python

#@_1180y_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

#%_1180

haut

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


#!/usr/bin/python

#@_1155y_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()     #read
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@-

#%_1155

haut

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


#!/usr/bin/python

#@_1028y_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()     #read
fd33 = open (OUT , "w")      #write

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
# ---- --- --- ---- --- ----- ----------
#%_1028

haut

Supprimer les lignes vides


#!/usr/bin/python

#@_1029y_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:     #read
    fwhab6 = open (INTER6 , 'w')     #write
    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
#%_1029

haut

Supprimer des lignes avec startswith


#!/usr/bin/python

#@_1030y_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')     #read
lines = f1.readlines()
f1.close()

f1 = open ("out.txt" , 'w')    #write    # 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

#%_1030

haut

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


#!/usr/bin/python

#@_1031y_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()       #read

# print bad_words     

with open(IN) as oldfile:        #read
    newfile = open (OUT , 'w')     #write
    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
#%_1031

haut

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


#!/usr/bin/python

#@_1032y_deleter_lignes_de_inoutplusieursfichiers_si_patterns_sont_dans_1_fichier!!oslistdir_search_read_splitlines_ifanyin_inforin

import os
import re
import glob
import time

TIME=3

PATHHOME="/Python27/TESTS"
LISTY="1-liste-y.txt"
DELETE="1-delete.txt"

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

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

# DELETE :
# data

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

# deleter anciens resultats

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

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

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

# listes

#+_1032a_capture_dans_inplusieursfichiers!!oslistdir_search
os.chdir(PATHHOME)
filenamey = os.listdir(PATHHOME)     #read
fy = open (LISTY , "w")     #write

for filey in filenamey:
    my = re.search("y-" , filey)
    if my:
#        print filey.strip()
        os.chdir(PATHHOME)
        fy.write(filey + "\n")

fy.close()
#-
###########################

# trier la liste si necessaire

#####

# lire les fichiers  y-  ;  filtrer ; ecrire dans les  xy-

#+_1032b_creer_fichiers_prefixe_x_a_partir_d_1_liste_de_prefixe_y!!openr_read_splitlines_ifanyin_inforin
for id9 in open (LISTY):     #read
    id9=id9.strip()

    f9 = open (id9 , "r")      #read
    f10 = open ("x" + id9 , "w")     #write    
    
# filtre    
    bad_words = open (DELETE).read().splitlines()     #read
    for line9 in f9:
        if not any(bad_word in line9 for bad_word in bad_words):
#            print line9.strip()
            f10.write(line9)

f9.close()
f10.close()
#-
# resultat :
# xy-001.txt
# 100
# 101

# xy-002.txt
# 200
# 201
#%_1032

haut

Supprimer des groupes de mots avec re.sub


#!/usr/bin/python

#@_1033y_deleter_groupes_de_mots!!oslistdir_ifin_withopen_sub_ifin

import os
import re

# 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

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

f1 = os.listdir(PATHHOME)
fw = open (OUT , "w")    #write

for file in f1:
    if "uyz" in file:
        with open (file) as f2:    #read
            for line in f2:
                line = re.sub('Timing.*?ms' , '' , line)
                line = re.sub('Tmg.*?ms' , '' , line)
                line = re.sub('dis.*?ed' , '' , line)
                line = re.sub('f.*?d' , '' , line)

                if "SP" in line or "shot" in line or "autofire" in line:
                    print line.strip()
                    fw.write(line)

fw.close()
f2.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
#%_1033

haut

Capture des colonnes 1 et 2


#!/usr/bin/python

#@_1034y_capture_colonnes_1_et_2!!withopen_split_join

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


with open("in.txt" , 'r') as f22:      #read
    f23 = open ("out.txt" , 'w')     #write
    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
#%_1034

haut

Capture de l'avant derniere et derniere colonne


#!/usr/bin/python

#@_1035y_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:     #read
    f23 = open ("out.txt" , 'w')     #write
    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
#%_1035

haut

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


#!/usr/bin/python

#@_1152y_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

#%_1152

haut

Rechercher une extension dans une liste de fichiers (selection d'une colonne)


#!/usr/bin/python

#@_1135y_capture_tableau_extension_liste_fichiers!!oslistdir_ifin_tableau[]

import os

# BUT : rechercher 1 extension dans 1 liste de fichiers
# selection d'une colonne

PATH="/Python27/tests-11/"

OUT1="1-resultat.txt"

########

# fichiers dans PATH :
# 0-sub1.py
# 1-data.doc
# 1-out.txt
# 1-sub1.txt

# liste des extensions recherchees
alist_filter = ['.txt']
# alist_filter = ['.txt' , '.doc']

fw1 = open(OUT1 , "w")
for files in os.listdir(PATH):
#    print files
    if files[-4:] in alist_filter:
        print files
        fw1.write(files + "\n") 
fw1.close()

# resultat :
# 1-out.txt
# 1-sub1.txt

#%_1135

haut

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


#!/usr/bin/python

#@_1136y_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')      #read
fwhab10 = open (OUT , 'w')     #write
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

#%_1136

haut

Ce que WITH OPEN permet de faire : startswith sub replace split (exemple pour un seul fichier)


#!/usr/bin/python

#@_1139y_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 --

#%_1139

haut

Ce que WITH OPEN permet de faire : sub ifin replace (exemple pour plusieurs fichiers)


#!/usr/bin/python

#@_1143y_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

#%_1143

haut

Ce que "RANGE LEN" permet de faire : capturer lignes avant ou apres un pattern


#!/usr/bin/python

#@_1161y_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

#%_1161

haut

Ce que "RANGE LEN" permet de faire : read() splitlines() split isdigit isalpha


#!/usr/bin/python

#@_1147y_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

#%_1147

haut

Ce que "RANGE LEN" permet de faire : ajouter un titre devant chaque ligne d'un fichier



#!/usr/bin/python

#@_1148y_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")    #read   #write

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

#%_1148

haut

Ce que "WHILE LINE" permet de faire : lecture ligne par ligne d'un fichier



#!/usr/bin/python

#@_1162y_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 

#%_1162

haut

Capturer en verticale et horizontale


#!/usr/bin/python

#@_1149y_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

#%_1149

haut

Une colonne indique le nombre de fois qu'une ligne doit etre repetee


#!/usr/bin/python

#@_1036y_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:    #read
    fd1 = open ("out.txt" , 'w')     #write
    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
#%_1036

haut

Capturer la 1 ere et derniere ligne d'une colonne marquee par un separateur


#!/usr/bin/python

#@_1037y_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 : @

#+_1037a_capture_colonnes!!readlines_range_len_split

data1 = open ("data1.txt").readlines()     #read
fp = open ("1-nav1.txt","w")     #write
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

#+_1037b_inserer_trait_separation!!readlines_range_len_split

data2 = open ("1-nav1.txt").readlines()     #read
fp = open ("1-nav2.txt","w")     #write
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
#%_1037

haut

Noter les lignes ou les patterns d'une colonne changent


#!/usr/bin/python

#@_1038y_capture_marquer_lignes_dont_patterns_d_1_colonne_changent!!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

#+_1038a_capture_ligne!!readlines_range_len_split_int_str_join

data2 = open (LISTE).readlines()     #read
fp = open ("out.txt","w")     #write

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
#%_1038

haut

Selectionner les lignes ayant plus d'un champ


#!/usr/bin/python

#@_1039y_capture_lignes_ayant_plus_d_1_champ!!withopen_split_len_join

with open("start.txt" , "r") as f:    #read
    fw = open ("out.txt" , "w")      #write
    for line in f:
        b = line.split()
        if len(b) > 1:
            print ' '.join(b)
            fw.write(' '.join(b) + "\n")
f.close()
fw.close()
#%_1039

haut

Marquer les lignes ayant plus d'un champ


#!/usr/bin/python

#@_1127_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:    #read
    fw = open ("out.txt" , "w")      #write
    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

#%_1127

haut

Rechercher une syntaxe dans des fichiers (directory and sub directories) (equivalent a : xargs en BASH°


#!/usr/bin/python

#@_1130y_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

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:
            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

#%_1130

haut

Rechercher une syntaxe dans des fichiers


#!/usr/bin/python

#@_1131y_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

#%_1131

haut

Deleter le repertoire s'il existe ; creer le repertoire s'il n'existe pas


#!/usr/bin/python

#@_1132y_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)

#%_1132

haut

Chaque ligne est en STRING


#!/usr/bin/python

#@_1040y_lire_chaque_ligne_est_en_STRING!!voir_x

#+_1040a_lire_chaque_ligne_est_en_STRING!!while_readline_break

IN="in.txt"
fd = open (IN , 'r')     #read
while 1:
    line = fd.readline()
    if not line:
        break
    
    print line.strip() , type(line)
    
fd.close()
#-
# she plans to attempt the record again !!lttype 'str'!!gt
# his aim is to get rich !!lttype 'str'!!gt

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

#+_1040b_lire_chaque_ligne_est_en_STRING!!read_splitlines

mylist = open (IN).read().splitlines()     #read
for i in mylist:
    print i , type(line)
#-
# she plans to attempt the record again !!lttype 'str'!!gt
# his aim is to get rich !!lttype 'str'!!gt

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

print

#+_1040c_lire_chaque_ligne_est_en_STRING!!withopen

with open(IN , 'r') as f:     #read
    for i in f:
        print i.strip() , type(line)
f.close()        
#-
# she plans to attempt the record again !!lttype 'str'!!gt
# his aim is to get rich !!lttype 'str'!!gt

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

#+_1040d_lire_chaque_ligne_est_en_STRING!!forinopen

d_list = [line.strip() for line in open (IN)]      #read
for line in d_list:
    print line , type(line)
#-
# she plans to attempt the record again !!lttype 'str'!!gt
# his aim is to get rich !!lttype 'str'!!gt

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

print

#+_1040e_lire_chaque_ligne_est_en_STRING!!openr_readlines_str

f = open (IN,"r")      #read
for line in f.readlines():
    line = str(line).rstrip()  
    print line , type(line)

f.close()
#-
# she plans to attempt the record again !!lttype 'str'!!gt
# his aim is to get rich !!lttype 'str'!!gt

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

#+_1040f_lire_chaque_ligne_est_en_STRING!!readline_while_readline

f = open (IN,"r")     #read
line = f.readline()
while line:
    print line.strip() , type(line)
    line = f.readline()

f.close()
#-
# she plans to attempt the record again !!lttype 'str'!!gt
# his aim is to get rich !!lttype 'str'!!gt

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

#+_1040g_lire_chaque_ligne_est_en_STRING!!withopen_read_splitlines

with open (IN , "r") as f:     #read
    my_list = f.read().splitlines()
#    print my_list , type(my_list)    # !!lttype 'list'!!gt

    for line in my_list:
        print line , type(line)

f.close()
#-
# she plans to attempt the record again !!lttype 'str'!!gt
# his aim is to get rich !!lttype 'str'!!gt

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

#+_1040h_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 !!lttype 'str'!!gt
# his aim is to get rich !!lttype 'str'!!gt
#%_1040

haut

Chaque mot est en STRING


#!/usr/bin/python

#@_1041y_lire_chaque_mot_est_en_STRING!!voir_x

IN="in.txt"

#+_1041a_lire_fichier_decoupe_1_mot_par_ligne!!withopen_split

with open(IN , 'r') as f:    #read
    for line in f:
        for word in line.split():
            print word , type(word)
f.close()
#-
# she !!lttype 'str'!!gt
# plans !!lttype 'str'!!gt
# to !!lttype 'str'!!gt
# attempt !!lttype 'str'!!gt
# the !!lttype 'str'!!gt
# record !!lttype 'str'!!gt
# again !!lttype 'str'!!gt
# his !!lttype 'str'!!gt
# aim !!lttype 'str'!!gt
# is !!lttype 'str'!!gt
# to !!lttype 'str'!!gt
# get !!lttype 'str'!!gt
# rich !!lttype 'str'!!gt

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

#+_1041b_lire_fichier_decoupe_1_mot_par_ligne!!openr_read_split

f = open (IN , 'r')     #read
for word in f.read().split():
    print word , type(word)
#-
# she !!lttype 'str'!!gt
# plans !!lttype 'str'!!gt
# to !!lttype 'str'!!gt
# attempt !!lttype 'str'!!gt
# the !!lttype 'str'!!gt
# record !!lttype 'str'!!gt
# again !!lttype 'str'!!gt
# his !!lttype 'str'!!gt
# aim !!lttype 'str'!!gt
# is !!lttype 'str'!!gt
# to !!lttype 'str'!!gt
# get !!lttype 'str'!!gt
# rich !!lttype 'str'!!gt
#%_1041

haut

Une STRING contenant des lignes


#!/usr/bin/python

#@_1042y_lire_tout_le_fichier_en_une_STRING!!openr_read

IN="in.txt"

fd = open (IN , 'r')     #read
t = fd.read()
print t , type(t)

# she plans to attempt the record again
# his aim is to get rich      !!lttype 'str'!!gt
#%_1042

haut

Une STRING contenant des mots


#!/usr/bin/python

#@_1043y_lire_fichier_mot_par_mot!!forinopen_split

IN="in.txt"

#+_1043a_lire_fichier_mot_par_mot!!forinopen_split_join

w = [word for line in open (IN , 'r') for word in line.split()]     #read
w2 = '\n'.join(w)
print w2 , type(w2)
#-
# she
# plans
# to
# attempt
# the
# record
# again
# his
# aim
# is
# to
# get
# rich   !!lttype 'str'!!gt
#%_1043

haut

Chaque ligne est en LISTE


#!/usr/bin/python

#@_1044y_lire_chaque_ligne_est_en_LISTE!!openr_split

IN="in.txt"

for line in open (IN):      #read
    line = line.split()
    print line , type(line)

# ['she', 'plans', 'to', 'attempt', 'the', 'record', 'again']  !!lttype 'list'!!gt
# ['his', 'aim', 'is', 'to', 'get', 'rich']  !!lttype 'list'!!gt

#%_1044

haut

Une LISTE contient toutes les lignes


#!/usr/bin/python

#@_1045y_lire_une_LISTE_contient_toutes_les_lignes!!voir_x

IN="in.txt"

#+_1045a_lire_une_LISTE_contient_toutes_les_lignes_exemple_1!!read_splitlines

mylist = open (IN).read().splitlines()    #read
print mylist , type(mylist)
#-
# ['she plans to attempt the record again', 'his aim is to get rich'] !!lttype 'list'!!gt

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

#+_1045b_lire_une_LISTE_contient_toutes_les_lignes_exemple_2!!forinopen

d_liste = [line.strip() for line in open (IN)]    #read
print d_liste , type(d_liste)
#-
# ['she plans to attempt the record again', 'his aim is to get rich'] !!lttype 'list'!!gt
#%_1045

haut

Une LISTE contenant des mots


#!/usr/bin/python

#@_1046y_lire_une_LISTE_contient_tous_les_mots!!voir_x

IN="in.txt"

#+_1046a_lire_une_LISTE_contient_tous_les_mots_exemple_1!!forinopen_split

w = [word for line in open (IN , 'r') for word in line.split()]     #read
print w , type(w)
#-
# ['she', 'plans', 'to', 'attempt', 'the', 'record', 'again', 'his', 'aim', 'is', 'to', 'get', 'rich']    !!lttype 'list'!!gt

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

#+_1046b_lire_une_LISTE_contient_tous_les_mots_exemple_2!!openr_read_string_split

import string

f = open (IN)     #read
t = f.read()
print string.split(t) , type(string.split(t))
#-
# ['she', 'plans', 'to', 'attempt', 'the', 'record', 'again', 'his', 'aim', 'is', 'to', 'get', 'rich']  !!lttype 'list'!!gt
#%_1046

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

#@_1170y_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

#%_1170

haut

Chercher si les strings d'un gros fichier existent dans une liste


#!/usr/bin/python

#@_1047y_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()      #read

fw = open ("z-out.txt" , 'w')     #write

small_list = open ("z-liste.txt").read().split()      #read
print type(small_list)       # !!lttype 'list'!!gt

for string in big_file:
#    print type(string)        # !!lttype 'str'!!gt
    
    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  : -
#%_1047

haut

Une ligne est ecrite si un pattern dans une colonne correspond a un element dans un autre fichier


#!/usr/bin/python

#@_1048y_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()     #read

ff = open ("in.txt" , 'r')      #read       
f3 = open ("out.txt" , 'w')     #write
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 
#%_1048

haut

Des patterns d'une liste deviennent des noms de fichiers vides


#!/usr/bin/python

#@_1049y_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

#+_1049a_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")     #read
for i in f:
    i = i.strip()
    os.chdir(PATHTOUCH)
    with open("z-" + i + ".txt" , "w") as fw:    #write
        
        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
#%_1049

haut

Numeroter les lignes d'un fichier


#!/usr/bin/python

#@_1050y_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")     #read
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
#%_1050

haut

Pour numeroter les lignes de plusieurs fichiers (avec concatenation)


#!/usr/bin/python

#@_1051y_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)  #read  # attention au crochet fermant
f2 = open (RESULT , "w")     #write   

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
#%_1051

haut

Modifier une syntaxe avec SUB - exemple 1


#!/usr/bin/python

#@_1133y_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

#%_1133

haut

Modifier une syntaxe avec SUB - exemple 2


#!/usr/bin/python

#@_1134y_modifier_avec_sub_plusieurs_mots!!openr_sub

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

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

fw = open(OUT , 'w')
with open (IN , 'r') as f2:    #read
    for line in f2:
	line = re.sub('lar.*?txt' , '' , line)
	line = re.sub('log.*?ins/' , '' , line)

	print line.strip()
	fw.write(line)

fw.close()
f2.close()

# resultat :
# %data1/login/
# @data2/file2.txt
#%_1134

haut

Capturer un pattern : GREP par accumulation +=


#!/usr/bin/python

#@_1052y_capture_grep_accumulation!!openr_ifin_+=

chaine = "achieve"     # pattern recherche
contenu = ""

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

for line in f1:
    if chaine 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 
#%_1052

haut

Capturer un pattern : GREP avec SEARCH (permet replace)


#!/usr/bin/python

#@_1164y_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


chaine = "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(chaine) , line1):
            line1 = line1.replace("- English-French Dictionary WordReference.com" , "")
            print id1 , " : " , line1.strip()
            f2.write(id1 + " : " + line1)

f2.close()

# resultat
#  abandon : abandon

#%_1164

haut

Capturer un pattern : utilise l'objet IN


#!/usr/bin/python

#@_1053y_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:     #read
    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()
#%_1053

haut

Capturer un pattern avec FIND


#!/usr/bin/python

#@_1054y_capture_pattern_rawinput!!rawinput_withopen_startswith_find

w = raw_input("Input the English word: ")
    
with open("in.txt") as f:    #read
    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()
#%_1054

haut

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


#!/usr/bin/python

#@_1055y_capture_pattern_lignes_avant_apres_range!!readlines_range_len

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

PATTERN="element"


c=1
data = open (IN).readlines()     #read
fp = open (OUT,"w")     #write
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()
#%_1055

haut

Capturer plusieurs patterns dans un fichier


#!/usr/bin/python

#@_1056y_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:     #read
    fd = open (OUT, 'w')     #write
    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
#%_1056

haut

Capturer un pattern , le separateur delimitant la zone de capture


#!/usr/bin/python

#@_1057y_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:    #read
    fd = open (OUT, 'w')     #write
    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   
#%_1057

haut

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


#!/usr/bin/python

#@_1058y_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:     #read
    fd1 = open (OUT1, 'w')     #write
    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:     #read
    fd2 = open (OUT2, 'w')     #write
    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()
#%_1058

haut

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


#!/usr/bin/python

#@_1059y_capture_pattern_fnmatch_resultat_en_liste!!forinif_fnmatch

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

from fnmatch import fnmatchcase

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']
#%_1059

haut

Verifier si les elements d'une petite liste sont contenus dans une grande liste (vlookup) exemple1


#!/usr/bin/python

#@_1121y_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()     #read

big_file = [line1.strip() for line1 in open(BIG)]       #read

fw1 = open(RESULT1 , 'w')            #write

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

#%_1121

haut

Verifier si les elements d'une petite liste sont contenus dans une grande liste ; et inversement (vlookup) exemple2


#!/usr/bin/python

#@_1060y_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)]     #read    # a gauche

fw1 = open (RESULT1 , 'w')     #write


for i in range(len(big_file)):

    if big_file[i] in [line2.strip() for line2 in open (SMALL)]:     #read
        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)]     #read     # a gauche

fw = open (RESULT2 , 'w')     #write


for j in range(len(small_file)):

    if small_file[j] in [line4.strip() for line4 in open (BIG)]:     #read
        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
#%_1060

haut

Ecrire le nom du fichier devant toutes les lignes de plusieurs fichiers (exemple 1)


#!/usr/bin/python

#@_1061y_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)

#+_1061a_lire_ouvrir_liste_creant_inoutplusieursfichiers_+_renommer!!forinopen_split

for line1 in open ("liste.txt"):    #read
    line1 = line1.strip()
    print line1
    w = line1.split(".")[0].strip()

    for line2 in open (line1):    #read
        fw = open ("newname-" + line1 , 'a')     #write
        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
#%_1061

haut

Ecrire en colonne 1 a l'interieur de plusieurs fichiers et les sauver en modifiant le prefixe (exemple 2)


#!/usr/bin/python

#@_1062y_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:   #read
#     first_line = fadd.readline()
#         if first_line != "----------\n":
#             lines = fadd.readlines()

# script :
for id2 in open (SORTEDLISTE):     #read
    id2=id2.strip()
    
    os.chdir(PATHSCRIPTS)         # lire le fichier dans ce repertoire
    for line2 in open (id2 , 'r'):     #read
        
        os.chdir(PATHSTOCK)
        f3 = open ("zz-" + id2 , "a")    #write     # 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:   #read
# ajouter-ligne.py  @@@      first_line = fadd.readline()
# ajouter-ligne.py  @@@      if first_line != "----------\n":
# ajouter-ligne.py  @@@          lines = fadd.readlines()
#%_1062

haut

Supprimer des accents en convertissant de l'ASCII en HEXA et HEXA en ASCII


#!/usr/bin/python

#@_1063y_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:       #read
    fd1 = open ("1-ascii1.txt", 'w')     #write
    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")     #read

fd2 = open ("1-hex1.txt", "w")     #write
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:   #read
    lines = fd2.readlines()
with open("1-hex2.txt", "w") as source2:   #write
    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:     #read
    fd3 = open ("1-hex3.txt", 'w')     #write
    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:    #read
    fd4 = open ("1-hex4.txt", 'w')     #write
    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:     #read
    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()

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

#+_1063a_deleter_les_blancs!!withopen_readlines_withopen_sub

with open ("1-hex4.txt", "r") as fd5:     #read
    lines = fd5.readlines()
with open("1-hex5.txt", "w") as fd6:     #write
    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")     #read

new2 = open ("1-ascii-6.txt", "w")     #write
town = new1.read()
print "taille du resultat hexa sans espace : " , len(town)

new2.write(town.decode("hex"))

new1.close()
# new2.close()

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

#+_1063b_modifier_remplacer_pattern!!withopen_readlines_sub
with open("1-ascii-6.txt", "r") as new2:     #read
    lines = new2.readlines()
with open(RESULT, "w") as new3:    #write
    for line in lines:
        m = re.sub('%%%', r'\n', line)
        new3.write(m)

new2.close()
new3.close()
#-
print "--> ok resultat dans : " ,RESULT
#%_1063

haut

Capturer une ligne avec choix du pattern et de son occurrence


#!/usr/bin/python

#@_1146y_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
#%_1146

haut

Maitriser le nombre de champs pour chaque ligne


#!/usr/bin/python

#@_1064y_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:    #read
    f2 = open ("out.txt" , 'w')     #write
    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
#%_1064

haut

Compter nombre de mots pour chaque ligne (et l'ecrire en bout de ligne)


#!/usr/bin/python

#!/usr/bin/python

import re

#@_1156y_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

#%_1156

haut

Compter occurrences d'un pattern pour chaque ligne - exemple 1


#!/usr/bin/python

#@_1065y_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:    #read
    fd = open (OUT , "w")     #write
    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 :  -
#%_1065

haut

Compter occurrences d'un pattern pour chaque ligne - exemple 2


#!/usr/bin/python

#@_1122y_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:     #read
    f3 = open ("out.txt" , 'w')      #write
    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

#%_1122

haut

Compter les occurrences de chaque mot d'un fichier : methode 1


#!/usr/bin/python

#@_1066y_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()      #read
uniqWords = sorted(set(words)) 
fd2 = open ("out.txt" , 'w')     #write
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))

# resultat
# 10   -
# 3   @@@
# 1   abide
# 1   accept
# 1   access
#%_1066

haut

Compter les occurrences de chaque mot d'un fichier : methode 2


#!/usr/bin/python

#@_1067y_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()     #read
fw1 = open (OUT1 , "w")     #write

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
#+_1067a_trier_1_liste!!forinopen_sort_key_int_split_reverse

d_list = [ligne.strip() for ligne in open (OUT1)]     #read

fw2 = open (OUT2 , 'w')     #write

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
#%_1067

haut

Compter les occurrences de chaque mot d'un fichier : methode 3


#!/usr/bin/python

#@_1068y_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()]     #read
print w
f2 = open ("out.txt" , "w")    #write

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")]     #read

f3 = open ("out2.txt", 'w')     #write

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
#%_1068

haut

Indiquer le numero de chaque ligne qui suit un titre


#!/usr/bin/python

#@_1069y_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()     #read
fd14 = open (RESULT14 , "w")     #write

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
#%_1069

haut

Cumuler les occurrences d'un pattern d'un fichier et ecrire ce chiffre en fin de ligne


#!/usr/bin/python

#@_1070y_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')     #read
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
#%_1070

haut

Indiquer les positions de toutes les occurrences d'un pattern


#!/usr/bin/python

#@_1071y_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("1-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:     #read
    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:     #read
    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]
#%_1071

haut

Apres avoir delimite une zone de capture, indiquer les frequences des mots


#!/usr/bin/python

#@_1072y_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:     #read
    fd1 = open (OUTUK, 'w')     #write
    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()     #read
uniqWords = sorted(set(words)) 
fd2 = open (OUTUKFREQ , 'w')     #write
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:    #read
    fd3 = open (OUTUKFREQ2 , "w")     #write
    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
#%_1072

haut

Selectionner des colonnes en utilisant : SPLIT


#!/usr/bin/python

#@_1073y_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:    #read
    fd4 = open ("out.txt" , 'w')     #write
    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
#%_1073

haut

Lire un fichier ligne par ligne en splitant avec un compteur (boucle while)


#!/usr/bin/python

#@_1074y_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")     #read
    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']
#%_1074

haut

Remplacer un pattern


#!/usr/bin/python

#@_1075y_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:    #read
    fwhab5 = open (INTER5 , 'w')     #write
    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
#%_1075

haut

Capturer avec syntaxe search-replace


#!/usr/bin/python

#@_1076y_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:     #read
    fwhab5 = open (INTER5 , 'w')     #write
    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
#%_1076

haut

Rechercher 1 mot avec 1 mot avant et apres


#!/usr/bin/python

#@_1077y_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:     #read
    fd = open (END1 , 'a')     #write

    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')     #write
d_list = [line.strip() for line in open (END1)]     #read

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
#%_1077

haut

Capture pattern avec 2 fichiers


#!/usr/bin/python

#@_1078y_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()     #read

fs = open (START, 'r')     #read
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
#%_1078

haut

Capturer un pattern avec finditer


#!/usr/bin/python

#@_1079y_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:     #read
    fd = open (OUT , 'w')     #write
    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!!
#%_1079

haut

Capturer un pattern avec startswith


#!/usr/bin/python

#@_1080y_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()     #read
fd13 = open (RESULT13 , "w")     #write

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

fd13.close()

# resultat :
# ) reculer
# ) faire reculer
#%_1080

haut

Capturer patterns multi regex avec STARTSWITH


#!/usr/bin/python

#@_1081y_capture_patterns_multi_regex!!readlines_startswith

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

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

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

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

# resultat : zout.txt
# line1
# python
# script
# end of test
#%_1081

haut

Capturer un pattern avec endswith


#!/usr/bin/python

#@_1082y_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:    #read
    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
#%_1082

haut

Capturer pattern equivalent de startswith


#!/usr/bin/python

#@_1083y_capture_pattern_equivalent_de_startswith!!withopen_continue_readlines_continue

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

#+_1083a_capture_pattern_exemple1!!withopen_continue

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

######
#+_1083b_capture_pattern_exemple2!!readlines_continue

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

for line1 in fd1:
    if line1[0] == "@":
        continue
    print line1.strip()    # type(line1)   
    fd2.write(line1)
    
fd2.close()
#-
# resultat :
# data1 line1
# data3 line3
#%_1083

haut

Joindre 2 lignes consecutives sur une seule ligne


#!/usr/bin/python

#@_1084y_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>
# numeroter_lignes_d_1_fichier


f = open (IN).read().split("\n")     #read
fw = open ("out.txt" , "w")      #write

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>numeroter_lignes_d_1_fichier
#%_1084

haut

Merge 2 files side by side (equivalent de PASTE en bash)


#!/usr/bin/python

#@_1085y_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")     #read
comp2 = open (INTER2 , "r")     #read
f5 = open (INTER3 , "w")     #write
    
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
#%_1085

haut

Joindre 2 lignes consecutives, deleter la 3 eme


#!/usr/bin/python

#@_1086y_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

#+_1086a_ajouter_texte_fin_de_ligne!!readlines_enumerate_startswith_join_replace
data = open (DATAUKFR).readlines()     #read
fw1 = open (OUT71, 'w')     #write
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  @@  ' , ''))
#-

#+_1086b_deleter_2_eme_occurrence_d_1_pattern_bout_de_ligne!!withopen_replace
with open (OUT71 , 'r') as fw1:     #read
    fw2 = open (OUT72, 'w')     #write
    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
#%_1086

haut

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


#!/usr/bin/python

#@_1087y_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:     #read
    fd4b = open (FREQ3 , "w")     #write
    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
#%_1087

haut

Marquer des lignes pour les joindre ensuite


#!/usr/bin/python

#@_1125y_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")     #read  #write

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

# marquer des lignes en utilisant le repere : "traduction automatique de Google"

fd30 = open (IN2 , 'r').readlines()    #read
fd31 = open (OUT1 , "w")     #write

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")     #read
fw = open (OUT2 , "w")      #write

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
#%_1125

haut

Test sur l'existence d'un mot dans un fichier


#!/usr/bin/python

#@_1088y_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')    #read
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
#%_1088

haut

Supprimer des lignes si des mots sont dans un fichier


#!/usr/bin/python

#@_1089y_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()     #read

# print bad_words     

with open(IN) as oldfile:       #read
    newfile = open (OUT , 'w')    #write
    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
#%_1089

haut

range - pop : selectionne un element d'une liste


#!/usr/bin/python

#@_1090y_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
#%_1090

haut

sorted(list(set())) : liste des elements uniques


#!/usr/bin/python

#@_1091y_capture_trier_et_elements_uniques!!voir_x

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

##############
# START :
# 5
# 6
# 5
# 8
# 3
# 8
# 9
# 6

#+_1091a_capture_sorted_trier!!read_splitlines_sorted_set

mylist = open (START).read().splitlines()     #read
print mylist , "     " , type(mylist)   # ['5', '6', '5', '8', '3', '8', '9', '6']      !!lttype 'list'!!gt
fw = open (OUT , 'w')     #write

mylist2 = sorted(list(set(mylist)))
print mylist2 ,  "     " , type(mylist2)      # ['3', '5', '5', '6', '6', '8', '8', '9']      !!lttype 'list'!!gt
#-

#+_1091b_capture_unique!!append_forinifin_join_str
unique = []
[unique.append(item) for item in mylist2 if item not in unique]
print unique  ,  "     " , type(unique)    # ['3', '5', '6', '8', '9']      !!lttype 'list'!!gt

# convertir en string
str1 = '\n'.join(str(e) for e in unique)
print str1 ,   "     " , type(str1)      # tout le fichier d'1 bloc : !!lttype 'str'!!gt
#-

fw.write(str1)
fw.close()

# resultat
# ['5', '6', '5', '8', '3', '8', '9', '6']       !!lttype 'list'!!gt
# ['3', '5', '5', '6', '6', '8', '8', '9']       !!lttype 'list'!!gt
# ['3', '5', '6', '8', '9']       !!lttype 'list'!!gt
# 3
# 5
# 6
# 8
# 9       !!lttype 'str'!!gt
#%_1091

haut

Trier un fichier (sorted set)


#!/usr/bin/python

#@_1160y_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 

#%_1160

haut

Trier un fichier (read splitlines)


#!/usr/bin/python

#@_1120y_trier_fichier_read_splitlines!!openr_read_splitlines_sorted_join

# in.txt
# 1087 data99
# 1178 data11
# 1005 data05


fd = open ("in.txt" , 'r')      #read
fw = open ("out.txt" , 'w')     #write

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
#%_1120

haut

Trier sur une seule colonne (list sort key lambda)


#!/usr/bin/python

#@_1092y_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:    #read
    f2 = open ("1-liste.txt" , "w")     #write

    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")]     #read

f3 = open ("1-liste-triee.txt", 'w')      #write

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
#%_1092

haut

Trier en choisissant la colonne du tri (list sort key lambda split)


#!/usr/bin/python

#@_1093y_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")]     #read

fd = open ("out-sorted.txt", 'w')     #write

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
#%_1093

haut

Compter les fichiers d'un repertoire


#!/usr/bin/python

#@_1094y_count_fichiers_d_1_repertoire!!len_fnmatch_filter_oslistdir_search

#+_1094a_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'))
#-
######

#+_1094b_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
#-
#######

#+_1094c_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 :  /nfs/u/trotigno/0-0-2-COLLINS-syno/Y-  ; nb de fichiers : y-g  :  16
#dans :  /nfs/u/trotigno/0-0-2-COLLINS-syno/Y-  ; nb de fichiers : y-  :  916
#%_1094

haut

Lister un repertoire avec 'getstatusoutput'


#!/usr/bin/python

#@_1095y_lister_repertoire!!getstatusoutput_split_forinif

#+_1095a_convertir_commande_bash_en_python!!commands_getstatusoutput_split_forinifin
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
#%_1095

haut

Lister un repertoire avec 'startswith'


#!/usr/bin/python

#@_1096y_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:      #write
    dir = os.listdir(PATH)         #read
    for file in dir:
        if file.startswith(FILESTOCONCATENATE):
            print file
            output.write(file + "\n")
output.close()

# resultat
# CLIENT1
# CLIENT2
# CLIENT3
#%_1096

haut

Lister un repertoire avec 'search'


#!/usr/bin/python

#@_1097y_lister_repertoire!!oslistdir_search

PATHHOME="/Python27/TESTS/"
LISTY="1-liste-y.txt"

os.chdir(PATHHOME)
fy = open (LISTY , "w")     #write
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
#%_1097

haut

Tester si un fichier est vide


#!/usr/bin/python

#@_1098y_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"
#%_1098

haut

Copier un fichier dans un autre repertoire (oubien le changer de repertoire)


#!/usr/bin/python

#@_1126_copier_changer_repertoire_1_fichier!!shutil_move_copy2

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"


#%_1126

haut

Copier plusieurs fichiers de meme prefixe dans un autre repertoire


#!/usr/bin/python

#@_1099y_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
#%_1099

haut

Copier plusieurs fichiers dans un autre fichier


#!/usr/bin/python

#@_1100y_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')     #write
for files in os.listdir(rep):
    if files.startswith('pattern'):
        filin = open (files,'r')     #read
        data = filin.read()
        print files
        filout.write(data)

filin.close()
filout.close()

# resultat :
# fichier1.txt
# fichier2.txt
#%_1100

haut

Copier plusieurs directories dans un autre directory


#!/usr/bin/python

#@_1101y_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
#%_1101

haut

Renommer un fichier


#!/usr/bin/python

#@_1102y_renommer_1_fichier!!oslistdir_osrename_replace

for filename in os.listdir('.'):
    os.rename(filename, filename.replace('file_1.txt' , 'file_001.txt'))
#%_1102

haut

Renommer plusieurs fichiers (exemple 1)


#!/usr/bin/python

#@_1181y_renommer_inoutplusieursfichiers!!glob_join_osrename

import os
import glob

# renommer plusieurs fichiers dans 1 repertoire (exemple 1)

# 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

#%_1181

haut

Renommer plusieurs fichiers (exemple 2)


#!/usr/bin/python

#@_1103y_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
#%_1103

haut

Deleter un fichier (exemple 1)


#!/usr/bin/python

#@_1104y_deleter_fichier_exemple_1!!ospath_exists_osremove

import os

os.path.exists('fichier.txt') and os.remove('fichier.txt')

#%_1104

haut

Deleter un fichier (exemple 2)



#@_1105y_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)
#%_1105

haut

Deleter un fichier s'il est vide



#@_1124y_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)

#%_1124

haut

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


#!/usr/bin/python

#@_1106y_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(START , 'r').readlines())
print "le fichier a %d lignes" % linecount
# print "nb lignes du fichier : "  , linecount

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

# resultat
# 2
#%_1106

haut

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


#!/usr/bin/python

#@_1107y_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)    #read
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
#%_1107

haut

Afficher les occurrences uniques dans une colonne (exemple1 court)


#!/usr/bin/python

#@_1142y_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
# pour eviter les messages d'erreur et bloquer le script

with open(IN1 , 'r') as f25:
    f26 = open(IN2 , 'w')
    f26.write("@startstart @@")
    f26.write("\n")
    for line25 in f25:
        f26.write(line25)
    f26.write("@endend @@")
    f26.write("\n")
    f26.write("@endend @@")
    f26.write("\n")
f25.close()
f26.close()

# capture des occurrences uniques
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  

#%_1142

haut

Afficher les occurrences uniques dans une colonne (exemple2 long)


#!/usr/bin/python

#@_1108y_count_occurrences_uniques_dans_1_colonne!!readlines_len_split

import sys
import os
import re
import time

LISTORIGTRIE="2-liste-triee.txt"
VLOOKUP="1-vlookup.txt"

PATHHOME="/nfs/u/name/0-1-Word-Reference"         
PATHY="/nfs/u/name/0-1-Word-Reference/Y-"              

LISTEZ="2-liste-z.txt"
VERIF1="1-verif1.txt"
VERIF2="1-verif2.txt"

TIME=1

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

# 1-cat-w.txt :
# abide @@@ to tolerate; put up with
# abide @@@ to accept or submit to; suffer
# abide @@@ to comply (with): (exemple :) to abide by the decision
# accept @@@ to take or receive (something offered)
# accept @@@ to give an affirmative reply to
# access @@@ the act of approaching or entering
# access @@@ the condition of allowing entry, esp allowing entry by wheelchairs
# access @@@ the right or privilege to approach, reach, enter

#+_1108a_count_nombre_lignes_d_1_fichier!!readlines_len

a = open ("1-cat-w.txt").readlines()     #read

print "nbr lignes du fichier : " , len(a)
#-
###########

#+_1108b_capture_colonne!!withopen_split

with open("1-cat-w.txt" , 'r') as fww:    #read
    fverif = open (VERIF1 , 'w')     #write
    for i in fww:

        m = i.split("@@@")[0].split("%%")[0].strip()
#        print m
        
        fverif.write(m + "\n")

fww.close()
fverif.close()
#-
#######

# operation entre les lignes

# 1-verif1.txt
# abide
# abide
# abide
# accept
# accept
# access
# access
# access

#+_1108c_capture_operations_entre_lignes_occurrences_uniques!!readlines_while_len_pop

b = open (VERIF1).readlines()     #read
c = open (VERIF2 , 'w')     #write

k=1
while k < len(b):
    if b[k] in b[k+1:]:

        b.pop(k)
#        print ""
    else:
#        print k , b[k].strip()
        print b[k].strip()
        road = b[k]
        c.write(road)
        k=k+1

c.close()
#-
# resultat : (occurrence unique)
# abide
# accept
# access

#%_1108	

haut

Capturer des patterns d'une colonne et les ecrire dans des fichiers differents si ces patterns changent


#!/usr/bin/python

#@_1109y_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')      #read
for line in myFile.readlines():

    x = line.split(" ")[0]
    o = open ("prepo_" + x + ".txt" , "a")     #write

    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
#%_1109

haut

Capturer des paragraphes avec "IF IN"


#!/usr/bin/python

#@_1110y_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):     #read
    id18=id18.strip()
    print id18      

    id18b = "z-" + id18 + ".txt"
    print id18b    
    
    os.chdir(PATHZ)

    f=0
    for line in open (PATHZ + id18b):     #read
        line=line.strip()    
        if START1 in line:
            os.chdir(PATH)
            o = open ("y-" + id18 + ".txt" , "a")     #write
            f=1
        if END1 in line or END2 in line:
            f=0

        if f == 1:
            print >> o , line
#%_1110	    

haut

Capturer des paragraphes avec choix sur le pattern de debut


#!/usr/bin/python

#@_1111y_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()    #read
idlist = [i.strip() for i in idlist]
detailslist = open ("details.txt").readlines()    #read

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")     #write
        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
#%_1111

haut

Capturer des paragraphes avec seulement un pattern de debut


#!/usr/bin/python

#@_1112y_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

f=0
c=1
for line in open (START):     #read
    line=line.strip()
    if "C 1" in line:
        filename = line.split(" ")[2] + str(c)
        o = open (filename , "w")      #write
        f = 1
        c = c + 1
    if f:
        print >> o , line

# resultat :
# creation de 3 fichiers :
#CLIENT1
#CLIENT2
#CLIENT3
#%_1112

haut

Capturer des paragraphes avec pattern de debut et de fin


#!/usr/bin/python

#@_1113y_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"):     #read
    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")     #write
    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
#%_1113

haut

Capturer des paragraphes avec pattern de debut et de fin et rstrip


#!/usr/bin/python

#@_1114y_creer_paragraphe!!forinopen_flag_startswith_rstrip_split

# BUT : conserver le format en sortie avec rstrip()
# apres une capture de paragraphes

IN="in.txt"

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

# IN :
# #!!_search
#     with open (COMPLETE, 'r') as complete:   #read
#         final = open (SELECTED, 'a')
#         for line in complete:
# #!
# # trier la liste
# fd2= open(END2 , 'w')
# #!!_replace
# for line in d_list:
#     print line.replace("(" , "").replace(")" , "").replace("/" , "")
#     fd2.write(line.replace("(" , "") + "\n")
# fd2.close()
# #!

#########

# capture des paragraphes

BEGIN2="#!!"
END2="#!"

flag=0 ; c=0
for line in open (IN):      #read

# choisir une des 2 lignes suivantes :
#    line=line.strip()     # format de sortie casse
    line=line.rstrip()     # format de sortie conserve

    if line.startswith(END2):
        print line
        print >> o, line
        flag=0
        o.close()
    if line.startswith(BEGIN2):
        interface=line.split(BEGIN2)[1]
        flag=1;c=c+1
        o = open ("y" + str(c) + interface + ".txt" ,"w")     #write
    if flag == 1:
        print line
        print >> o, line

# resultat : creation de 2 fichiers : "y1_search.txt" et "y2_replace.txt"
# 1/2_ sans rstrip (format casse)

# fichier : y1_search.txt
# #!!_search
# with open (COMPLETE, 'r') as complete:   #read
# final = open (SELECTED, 'a')
# for line in complete:
# #!

# fichier : y2_replace.txt
# #!!_replace
# for line in d_list:
# print line.replace("(" , "").replace(")" , "").replace("/" , "")
# fd2.write(line.replace("(" , "") + "\n")
# fd2.close()
# #!

# 2/2_ avec rstrip (format conserve)

# fichier : y1_search.txt
# #!!_search
#     with open (COMPLETE, 'r') as complete:   #read
#         final = open (SELECTED, 'a')
#         for line in complete:
# #!

# fichier : y2_replace.txt
# #!!_replace
# for line in d_list:
#     print line.replace("(" , "").replace(")" , "").replace("/" , "")
#     fd2.write(line.replace("(" , "") + "\n")
# fd2.close()
# #!
#%_1114

haut

Inclure une commande BASH dans OS.SYSTEM


#!/usr/bin/python

#@_1172y_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

#%_1172

haut

Exemples de syntaxes pour concatener


#!/usr/bin/python

#@_1154y_concatener_exemples_syntaxes!!oslistdir_withopen_join_readlines_read_splitlines

import os
import re

### exemple 1

f53 = os.listdir(PATHHOME)
with open("out.txt" , 'w') as f54:

    for file53 in f53:
        if "yz-" in file53:
            w53 = ' '.join([line for line in open(file53).readlines()])
            print w53 , file53

            w53b = str(w53)         # convertir 1 chiffre en string
            w53ba = w53b , file53
            w53baa = '   '.join(w53ba)
            f54.write(w53baa + "\n")
f54.close()

### exemple 2

f1 = open (LIST).read().splitlines()     #read    
with open(CONCAT , 'w') as output:       #write

    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

file_list = []

for file in [ doc for doc in os.listdir(PATH)     #read   
f2 = open (RESULT , "w")     #write      

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()

#%_1154

haut

Concatener 2 fichiers (join - readlines)


#!/usr/bin/python

#@_1145y_concatener_2_inplusieursfichiers!!withopen_forin_readlines_write_join

# in1.txt :
# data from in1
# client 1

# in2.txt :
# data from in2
# client 2

with open('out.txt' , 'w') as output:
    for IN in ['in1.txt', 'in2.txt']:
        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()

# resultat :
# data from in1
# client 1
# data from in2
# client 2

#%_1145

haut

Concatener 2 fichiers (read)


#!/usr/bin/python

#@_1115y_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:      #write
    for fname in filenames:
        with open(fname) as concat:     #read
            fw.write(concat.read())
fw.close()
concat.close()
#%_1115

haut

Concatener une serie avec listdir


#!/usr/bin/python

#@_1153y_concatener_inplusieursfichiers_listdir!!listdir_withopen_join_readlines_str

import os
import re

# yz-1.txt :
# 15

# yz-2.txt
# 34

# concatenation des yz- 

f53 = os.listdir(PATHHOME)

with open("out.txt" , 'w') as f54:

    for file53 in f53:
        if "yz-" in file53:
            w53 = ' '.join([line for line in open(file53).readlines()])
            print w53 , file53

            w53b = str(w53)         # convertir 1 chiffre en string
            w53ba = w53b , file53
            w53baa = '   '.join(w53ba)
            f54.write(w53baa + "\n")
f54.close()

# resultat :
# 15 yz-1.txt
# 34 yz-2.txt

#%_1153

haut

Concatener une serie contenue dans un fichier


#!/usr/bin/python

#@_1116y_concatener_inplusieursfichiers_contenus_ds_liste!!read_splitlines_withopen_read

#liste-fichiers.txt :
#1-ing-a.txt
#1-ing-b.txt
#1-ing-c.txt

mylist = open ("liste-fichiers.txt").read().splitlines()     #read

print mylist
with open("out.txt" , "w") as fw:     #write
    for fname in mylist:
        with open(fname) as concat:     #read
            fw.write(concat.read())
fw.close()
concat.close()
#%_1116

haut

Concatener une serie de fichiers en retirant des lignes si elles contiennent des patterns specifiques


#!/usr/bin/python

#@_1117y_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) - accéder à - 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'accès
# !!!! disabled access - (entry for wheelchair users) - accès pour handicapés - 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()     #read    

# concatener la selection de fichiers

# noter que :    not line.isspace()   n'ecrit pas les lignes vides

with open(CONCAT , 'w') as output2:       #write

    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) - accéder à - 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. 
#%_1117

haut

Concatener une serie de fichiers (avec numerotation des lignes)


#!/usr/bin/python

#@_1118y_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)     #read   
f2 = open (RESULT , "w")     #write      

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
#%_1118

haut

LAST modification : MARCH 2017