Понадобилось накидать легкий и быстрый скрипт для построчного отсеивания из больших баз нужной информации, собственно пользуйтесь если кому нужно, базы с миллионами строк обрабатывает за секунды.
Инструкция по запуску:
=== Поиск по файлу или файлам с автоматическим удалением дубликатов ===
------------------------------------------------------------------------------------------------------------------
Options:
-f, --filename <targetfile> указать -f allfile для поиска по всем файлам директории | Имя файла без расширения
-r, --fileresult <result_filename> | Имя файла для записи результатов
-t, --filetype <type_file> | Тип файл например .txt
-s, --searchinfo <search_info> | Какую информацию искать в строках
-h, --help <help> | Справка
Примеры:
Example: ./base_search.py -f base -r resultfile -t .txt -s manager <- Поиск по конкретному файлу строк со словом manager
Example: ./base_search.py -f allfile -r resultfile -t .txt -s manager <- Поиск по всем файлам в директории строк со словом manager
Скрипт:
Если есть пожелания допилить этот инструмент в более что то мощное, например удаление мусора, выборка USA или еще какой либо инструментарий по работе с текстом на Python то пишите в комментарии, расширю функционал.
Инструкция по запуску:
=== Поиск по файлу или файлам с автоматическим удалением дубликатов ===
------------------------------------------------------------------------------------------------------------------
Options:
-f, --filename <targetfile> указать -f allfile для поиска по всем файлам директории | Имя файла без расширения
-r, --fileresult <result_filename> | Имя файла для записи результатов
-t, --filetype <type_file> | Тип файл например .txt
-s, --searchinfo <search_info> | Какую информацию искать в строках
-h, --help <help> | Справка
Примеры:
Example: ./base_search.py -f base -r resultfile -t .txt -s manager <- Поиск по конкретному файлу строк со словом manager
Example: ./base_search.py -f allfile -r resultfile -t .txt -s manager <- Поиск по всем файлам в директории строк со словом manager
Скрипт:
Код:
[/COLOR][/SIZE][/FONT][/SIZE]
[SIZE=14px][FONT=Roboto Condensed][SIZE=3][COLOR=#000000]import os
import argparse
import sys
def banner():
print('''
----------------------------------
# Coded By @O*nix v1.3
# https://github.com/onixdclxvi/PyDCLXVI.git
----------------------------------''')
banner()
info = ('''
Usage: ./base_search.py [options]
____________________________________________
=== Поиск по файлу или файлам с автоматическим удалением дубликатов ===
--------------------------------------------
Options: -f, --filename <targetfile> указать -f allfile для поиска по всем файлам директории | Имя файла без расширения
-r, --fileresult <result_filename> | Имя файла для записи результатов
-t, --filetype <type_file> | Тип файл например .txt
-s, --searchinfo <search_info> | Какую информацию искать в строках
-h, --help <help> | Справка\n
Примеры:
Example: ./base_search.py -f base -r resultfile -t .txt -s manager <- Поиск по конкретному файлу строк со словом manager
Example: ./base_search.py -f allfile -r resultfile -t .txt -s manager <- Поиск по всем файлам в директории строк со словом manager
''')
def help():
print (info)
sys.exit(0)
parser = argparse.ArgumentParser()
parser.add_argument("-f", "--filename")
parser.add_argument("-r", "--fileresult")
parser.add_argument("-s", "--searchinfo")
parser.add_argument("-t", "--filetype")
args = parser.parse_args()
filename = args.filename
fileresult = args.fileresult
filetype = args.filetype
searchinfo = args.searchinfo
message_pars = ('''Парсинг файлов закончен\nУдаляем дубликаты''')
message_duble = ('''Дубликаты удалены\nРабота завершена''')
if not args.filename or not args.fileresult or not args.searchinfo or not args.filetype:
help()
sys.exit(0)
# Функция поиска и записи данных в файл резульата
def searchdata(f):
result = open((fileresult + filetype), 'a')
files = open(f, 'r').readlines()
for i in files:
if i.count(searchinfo):
result.write(i)
if filename == ("allfile"):
print ('Ищем по всем' + " " + filetype + " " + 'файлам...')
for d, dirs, files in os.walk('.'):
for f in files:
if f.endswith(filetype):
searchdata(f)
else:
# проверка файла на существование
try:
file = open(filename + filetype)
except IOError as e:
print("Файла не существует!")
sys.exit(0)
# Если файл существует продолжаем выполнение
else:
with file:
print ("Ищем по файлу" + " " + filename + filetype)
for d, dirs, files in os.walk('.'):
for f in files:
if f.endswith(filename + filetype):
searchdata(f)
#Отпускаем файл
closefile = open(fileresult + filetype)
closefile.close()
print (message_pars)
# Удаляем дубликаты после парсинга данных
input = open((fileresult + filetype), 'r')
output = open((fileresult + "_nodubles" + filetype), 'w')
lines = input.readlines()
input.close()
seen = []
for line in lines:
if line not in seen:
seen.append(line)
output.writelines(seen)
print (message_duble)
sys.exit(0)
Если есть пожелания допилить этот инструмент в более что то мощное, например удаление мусора, выборка USA или еще какой либо инструментарий по работе с текстом на Python то пишите в комментарии, расширю функционал.