В приведенном выше коде, который представляет собой скрипт поиска файлов, содержится 2 файла;во-первых, SearchApp.py, который является классом с некоторыми методами для получения места назначения и текстом для его поиска.Во-вторых, Main.py, который является файлом, который я импортировал SearchApp.py, и я использовал его методы там.
когда я пытаюсь найти текст в каталоге, в котором содержится скрипт, он работает нормально,но всякий раз, когда я пытаюсь искать в других каталогах, происходит что-то плохое, и это вызывает ошибку кодировки, FileNotFound и ... Вот SearchApp.py:
import os
class Searcher(object):
"""Search class for our app :D """
def __init__(self):
self.items = []
self.matches = []
def header():
print("TATI Search App".center(75,'-'))
def get_destinition(self):
path = input("Where should I search? ")
if not path or not path.strip():
return None
if not os.path.isdir(path):
return None
return os.path.abspath(path)
def get_text(self):
text = input('enter text to search: ')
return text
def search_dir(self, directory, text):
self.directory = directory
self.text = text
items_in_dir = os.listdir(directory)
for item in items_in_dir:
if not os.path.isdir(os.path.join(directory,item)):
self.items.append(os.path.join(directory,item))
def search_text(self,target):
self.target = target
for file in self.items:
with open (file,'r',encoding='utf-8')as f:
for line in f:
if line.find(target) >0:
self.matches.append(line)
for found_item in self.matches:
print(found_item)
Это Main.py:
from searchApp import Searcher
searcher = Searcher()
path = searcher.get_destinition()
target = searcher.get_text()
directories = searcher.search_dir(path,target)
searcher.search_text(target)