Je suis loin de la programmation depuis longtemps, mais mon désir de faire quelque chose a atteint sa limite Cela n'a pas beaucoup de sens de le faire vous-même Ça allait être une bonne pratique de rééducation, alors j'ai commencé à la faire.
Les choses (prévues) que nous prévoyons de réaliser sont les suivantes. -Vous pouvez lister les fichiers dans un certain répertoire (et afficher le contenu) -La recherche par mot-clé (expression régulière) est possible -Afficher le résultat sur GUI (Puis-je l'afficher sur un navigateur WEB?)
Je n'ai pas encore fait du tout la partie GUI, mais j'ai pu chercher. La composition est comme ça jusqu'à présent.
| fichier source | une fonction | 
|---|---|
| AxMemoBrowser.py | Corps. Appeler quand exe | 
| PyCMemo.py | Classes qui implémentent des commandes équivalentes à CUI | 
| PyCBrowser.py | Classe qui implémente autour de l'interface graphique | 
| PyCSearchResult.py | Classe d'enregistrement des résultats de recherche | 
Mis en œuvre comme suit. Je suis nouveau dans ce domaine, il y aura donc probablement de meilleures implémentations.
AxMemoBrowser.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
Created on 2014/11/26
@author: kuromame
'''
from PyCMemo import PyCMemo
#cmemo = PyCMemo("/Users/kuromame/Desktop");
cmemo = PyCMemo();
#cmemo.ReadDir();
cmemo.SearchString("variable");
PyCMemo.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
Created on 2014/11/26
@author: kuromame
'''
#Importer les modules requis
import os;
import sys;
import re;
import codecs;
class PyCMemo:
    def __init__(self,root_dir=''):
        #Initialisation des membres de la classe
        print('[PyCMemo.__init__]');
        self.pwd = '';                  #Répertoire racine lors de la recherche
        self.file_list = [];            #Liste des fichiers recherchés
        self.pattern = [];              #Rechercher un mot(Peut être exprimé normalement).リスト形式で最後尾が最新のRechercher un mot.
        self.isRead = 0;                #Indicateur pour confirmer si vous avez effectué une seule recherche
        #Spécifiez le répertoire actuel ou le répertoire spécifié
        if root_dir != '':              
            self.pwd = root_dir;
        else:
            self.pwd = '';                  
    def ReadDir(self):
        #Initialisation variable
        print('[PyCMemo.ReadDir]');
        if self.pwd == '':
            self.pwd = os.path.abspath(os.path.dirname(__file__));
        print(self.pwd);
        #Recherchez dans le répertoire actuel.
        #Recherche de haut en bas.
        for root, dirs, files in os.walk(self.pwd):
            for file_ in files:
                full_path = os.path.join(root, file_);
                self.file_list.append(full_path);
                print(full_path);
        #Trier les résultats de la recherche
        self.file_list.sort();
        #print(self.file_list);
                
    def SearchString(self,pattern):
        #Initialisation variable
        print('[PyCMemo.SearchString]');
        self.pattern.append(pattern);
        #Initialisation du moteur de recherche d'expression régulière
        ptn = re.compile(self.pattern[-1]);
        #Appelez ReadDir si vous n'avez jamais lu le fichier
        if self.isRead == 0: self.ReadDir(),
        self.isRead = 1;
        #Rechercher des fichiers de manière récursive
        for fname in self.file_list:
            print('=Lancer la recherche=');
            print(fname);
            try:
                fp = codecs.open(fname,'r','utf-8');
                line_num = 1;
                try:
                    for line in fp.readlines():
                        if ptn.search(line): print(fname,line_num,line),
                        line_num += 1;
                        #print(fname,line_num);
                except UnicodeDecodeError:
                    print("Impossible de rechercher en raison d'une erreur de codage.")
                finally:
                    #Ne faites rien de manière inattendue.(À l'origine, il est nécessaire de concevoir comme lancer une exception)
                    pass
            finally:
                fp.close();
                print('=Fin de la recherche=')
    
                    
Au fait, à partir de ce moment, j'ai commencé à mettre le code sur GitHub en pratique. https://github.com/ambitious-kuromame/AxMemoBrowser
Recommended Posts