Ich war lange nicht mehr im Programm, aber mein Wunsch, etwas zu machen, hat seine Grenzen erreicht Es macht nicht viel Sinn, es selbst zu machen Es würde eine gute Rehabilitation und Übung werden, also fing ich an, es zu machen.
Die Dinge (geplant), die wir realisieren wollen, sind wie folgt. -Sie können die Dateien in einem bestimmten Verzeichnis auflisten (auch den Inhalt anzeigen) -Keyword-Suche (regulärer Ausdruck) ist möglich
Ich habe den GUI-Teil noch nicht gemacht, aber ich konnte suchen. Die Komposition ist bisher so.
Quelldatei | Funktion |
---|---|
AxMemoBrowser.py | Körper. Rufen Sie an, wenn exe |
PyCMemo.py | Klassen, die Befehle implementieren, die CUI entsprechen |
PyCBrowser.py | Klasse, die um die GUI implementiert |
PyCSearchResult.py | Klasse zum Speichern von Suchergebnissen |
Wie folgt implementiert. Ich bin neu darin, daher gibt es wahrscheinlich viele bessere Implementierungen.
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
'''
#Importieren Sie die erforderlichen Module
import os;
import sys;
import re;
import codecs;
class PyCMemo:
def __init__(self,root_dir=''):
#Initialisierung der Klassenmitglieder
print('[PyCMemo.__init__]');
self.pwd = ''; #Stammverzeichnis bei der Suche
self.file_list = []; #Liste der gesuchten Dateien
self.pattern = []; #Suchbegriff(Kann normal ausgedrückt werden).リスト形式で最後尾が最新のSuchbegriff.
self.isRead = 0; #Flag zur Bestätigung, ob Sie auch nur einmal gesucht haben
#Geben Sie das aktuelle Verzeichnis oder das angegebene Verzeichnis an
if root_dir != '':
self.pwd = root_dir;
else:
self.pwd = '';
def ReadDir(self):
#Variable Initialisierung
print('[PyCMemo.ReadDir]');
if self.pwd == '':
self.pwd = os.path.abspath(os.path.dirname(__file__));
print(self.pwd);
#Suchen Sie im aktuellen Verzeichnis.
#Suche von oben nach unten.
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);
#Suchergebnisse sortieren
self.file_list.sort();
#print(self.file_list);
def SearchString(self,pattern):
#Variable Initialisierung
print('[PyCMemo.SearchString]');
self.pattern.append(pattern);
#Initialisierung der Suchmaschine für reguläre Ausdrücke
ptn = re.compile(self.pattern[-1]);
#Rufen Sie ReadDir auf, wenn Sie die Datei noch nie gelesen haben
if self.isRead == 0: self.ReadDir(),
self.isRead = 1;
#Suchen Sie Dateien rekursiv
for fname in self.file_list:
print('=Suche starten=');
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("Suche aufgrund eines Codierungsfehlers nicht möglich.")
finally:
#Mach nichts unerwartetes.(Ursprünglich ist es notwendig, beispielsweise eine Ausnahme auszulösen)
pass
finally:
fp.close();
print('=Suche Ende=')
Übrigens habe ich von diesem Zeitpunkt an begonnen, den Code auf GitHub in die Praxis umzusetzen. https://github.com/ambitious-kuromame/AxMemoBrowser
Recommended Posts