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