Python >> Python opplæring >  >> Python

Python finner filer som inneholder en tekststreng:En nybegynnerveiledning – Python-opplæring

Når vi leser andres kildekoder, som du leser et wordpress-temakoder, må vi finne en fil som inneholder en tekststreng eller funksjon fra mange kildekodefiler. Det er en kjedelig ting. Finnes det noen enkel måte å finne disse filene som inneholder en tekststreng. Svaret er ja.

I denne opplæringen vil vi introdusere hvordan du finner disse filene med python-skript.

1.Sett inn en katalog og gå gjennom alle filer med filtype

For eksempel vil vi finne alle php-filer som inneholder en tekststreng 'acmephoto_action_feature_slider', først vil vi liste alle php-filer i en katalog.

import os
dir = r'E:\xampp\htdocs\www.pickdemo.com\wp-content\themes\acmephoto'
phpfiles = traverseDir(dir, file_type = '.php')

traverseDir() funksjonen er å liste alle filer med filtype. Du finner denne funksjonen i denne opplæringen.

Python Traverse-filer i en katalog for nybegynnere – Python-opplæring

2.Les alle filene linje for linje og sjekk om de inneholder en tekststreng eller ikke

Etter å ha listet alle filene i en katalog, vil vi lese disse filene linje for linje, så sjekker vi at hver linje inneholder en tekststreng (acmephoto_action_feature_slider) eller ikke, hvis en linje i en fil inneholder, returnerer vi den.

Her lager vi en funksjon for å sjekke at en fil inneholder en tekststreng eller ikke

from unidecode import unidecode
def fileContain(file, text):
    with open(file, 'rb') as fin:  # read file
        for line in fin:
            content = line.decode("utf-8")
            content= unidecode(content)
            if text in content:
                return True
    return False

Deretter vil vi sjekke alle php-filer.

for f in phpfiles:
    flag = fileContain(f, text = 'acmephoto_action_feature_slider')  
    if flag:
        print(f)

Kjør denne koden, vi vil få resultat som:

Det betyr at vi finner to filer i denne katalogen.