Neculai Fantanaru

Totul depinde de cine conduce

Python: Găseşte toate fişierele care conţin cuvinte duble (string sau număr)

On Februarie 28, 2022
, in
Leadership Quantum-XX by Neculai Fantanaru YYY

Puteti vizualiza intregul cod aici: https://pastebin.com/YNCWi580

Instalaţi Python. Ce face codul de mai jos?

In fiecare fisier html am o secventa php in care se afla aceasta variabila < ! -- $item_id = NUMBER;

Number este egal cu intervalul de la 1 la 1600 (sau pana la ce cifra doriti voi) De exemplu intr-un fisier pot avea. < ! -- $item_id = < ! -- HTML generated using hilite.me -->23; iar in alt fisier pot avea < ! -- $item_id = 1340; Si asa mai departe..

Eu vreau sa gasesc acele fisiere care contin numerele din string care se repeta, de exemplu pot avea 23; intr-un fisier si pot acea la fel 23; in alt fisier. Codul Python va salva in results_duplicates.txt toate denumirile fisierelor care contin dubluri de acest gen.

CODUL: Copiaţi şi rulaţi codul de mai jos în orice program interpreter (eu folosesc pyScripter) .

The CODE:

import os
import re

def read_text_from_file(file_path):
    """
    Aceasta functie returneaza continutul unui fisier.
    file_path: calea catre fisierul din care vrei sa citesti
    """
    with open(file_path, encoding='utf8', errors='ignore') as f:
        text = f.read()
        return text


def write_to_file(text, file_path, encoding='utf8'):
    """
    Aceasta functie scrie un text intr-un fisier.
    text: textul pe care vrei sa il scrii
    file_path: calea catre fisierul in care vrei sa scrii
    """
    with open(file_path, 'wb') as f:
        f.write(text.encode('utf-8', 'ignore'))


def get_duplicates(directory_path, results_file, tag):
    duplicates = dict()
    fisiere_care_nu_au_id = ''
    fisiere_duplicat = ''
    id_pattern = re.compile('\$item_id = (.*?);')
    for f in os.listdir(directory_path):
            if f.endswith('.html') and f != 'termeni-si-conditii.html' and f != "parteneri.html":
                filepath = directory_path + '//' + f
                file_text = read_text_from_file(filepath)
                number = re.findall(id_pattern, file_text)
                if len(number) != 0:
                    number = number[0]
                    number = number.strip()
                    if number in duplicates.keys():
                        duplicates[number].append(f)
                    else:
                        duplicates[number] = [f]
                else:
                    fisiere_care_nu_au_id = fisiere_care_nu_au_id + f + '\n'

    for key in duplicates.keys():
        if len(duplicates[key]) >= 2:
            for f in duplicates[key]:
                fisiere_duplicat = fisiere_duplicat + f + '\n'
            fisiere_duplicat += '\n\n'

    # i-au toate numerele din intervalul 1 - id maxim
    # modificare in numere intregi
    numere_intregi = [int(i) for i in list(duplicates.keys())]
    interval = list()
    if tag == 'ro':
        interval = [i for i in range(1, max(numere_intregi) + 1)]
    elif tag == 'en':
        interval = [i for i in range(5000, max(numere_intregi) + 1)]

    numere_care_lipsesc = list()
    for number in interval:
        if number not in numere_intregi:
            numere_care_lipsesc.append(number)
    print("MAX: ", max(numere_intregi))
    print("NUMERE CARE LIPSESC: ", numere_care_lipsesc)

    fisiere_care_lipsesc_id = ''
    for numar in numere_care_lipsesc:
        fisiere_care_lipsesc_id = fisiere_care_lipsesc_id + str(numar) + '\n'

    result = "FISIERE CARE NU AU ID \n\n" + fisiere_care_nu_au_id + '\n' + "FISIERE DUPLICAT \n\n" + fisiere_duplicat  + '\n' + "NUMERE CARE LIPSESC \n\n" + fisiere_care_lipsesc_id
    write_to_file(result, results_file)

    print("Scriere efectuata cu succes.")

if __name__ == '__main__':
    directory_path = "e:\\Carte\\BB\\17 - Site Leadership\\Principal\\en"   # AICI SCHIMB PATCH cu ro sau cu en
    results_file = "e:\\Carte\\BB\\17 - Site Leadership\\Principal\\ro\\results_duplicates.txt"  # AICI APAR REZULTATELE FINALE

    get_duplicates(directory_path, results_file, "en") # "ro"  # AICI SCHIMB PATCH cu ro sau cu en  (SCHIMBA SI MAI SUS )

That's all folks.

If you like my code, then make me a favor: translate your website into Romanian, "ro".

Also, you can see other Python Codes: VERSION 2 of this code. Or Version 3 OR Version 4 OR Version 5

Puteţi vizualiza şi versiunea de cod în PowerShell or VERSION 2 or VERSION 3

Alatura-te Comunitatii Neculai Fantanaru
Cele 63 de calităţi ale liderului
Cele 63 de calităţi ale liderului

De ce să citeşti această carte? Pentru că este hotărâtoare pentru optimizarea performanţelor tale. Fiindcă pune accent mai mult pe latura umană decât pe conceptul de business, ceea ce permite cu uşurinţă citirea şi înţelegerea ei.

Leadership - Magia măiestriei
Leadership - Magia măiestriei

Trăsătura esenţială a acestei cărţi, faţă de altele existente pe piaţă din acelaşi domeniu, este aceea că descrie, prin exemple, competenţele ideale ale unui lider. N-am susţinut niciodată că eşte uşor să devii un lider foarte bun, dar dacă veţi urma pas cu pas...

Atingerea maestrului
Atingerea maestrului

Pentru unii lideri „a conduce” înseamnă mai mult a juca un joc de şah, un joc de inteligenţă şi perspicacitate; pentru alţii un joc de noroc, un joc pe care cred că-l pot câştiga mergând de fiecare dată la risc şi pariind totul pe o singură carte.

Leadership Puzzle
Leadership Puzzle

Am scris această carte, care combină într-un mod simplu dezvoltarea personală cu leadershipul, ca pe un joc de puzzle, unde trebuie să combinaţi toate piesele date pentru a reconstitui imaginea de ansamblu.

Performanţa în conducere
Leadership - Pe înţelesul tuturor

Scopul acestei cărţi este de a vă oferi cât mai multe informaţii preţioase prin exemple concrete, şi de a vă arăta o cale prin care să dobândiţi capacitatea de a-i determina pe ceilalţi să vadă lucrurile din aceeaşi perspectivă ca dumneavoastră.

Leadership - Pe înţelesul tuturor
Leadership - Pe înţelesul tuturor

Urmăresc în rândurile acestei cărţi să trezesc interesul omului obişnuit pentru acţiune şi succes. Mesajul acestui volum este că o naţiune puternică este format din oameni puternici şi de succes. Iar fiecare din noi are potenţial, deci succes…