• XSS.stack #1 – первый литературный журнал от юзеров форума

прочее Uniqify by V2RAY - софт для удаления дублей из TXT файлов

v2ray

ripper
КИДАЛА
Регистрация
20.08.2024
Сообщения
37
Реакции
11
Пожалуйста, обратите внимание, что пользователь заблокирован
Написан на Python. Не судите строго! Писал для своих нужд, чтоб по-быстрому отфильтровать спарсенную инфу.
Когда софт запрашивает путь к исходному файлу (не обязательно с юзернеймами) писать ничего не нужно, просто берёте и мышкой перетаскиваете txt файл командную строку.
Потом программа попросить указать название выходного файла: пишете что-то типо output.exe
Программа всё обрабатывает, выдаёт результат и даже создаст файл report.txt с отчётом.
Ниже привожу официальное описание своего софта:

Uniqify: Инструмент для Очистки Списков от Дубликатов

Uniqify — это простой и эффективный инструмент для удаления дубликатов из текстовых файлов, который помогает поддерживать ваши списки в идеальном порядке. Разработанный с акцентом на удобство и надежность, Uniqify позволяет легко управлять и очищать данные, не тратя время на ручные операции.

Ключевые функции:

  • Удаление Дубликатов: Автоматически обнаруживает и удаляет повторяющиеся записи из вашего текстового файла, оставляя только уникальные элементы.
  • Поддержка Разных Кодировок: Определяет и корректно обрабатывает кодировку исходного файла, обеспечивая точность чтения и записи данных, даже если файл содержит нестандартные символы.
  • Отчёт о Работе: Создаёт подробный отчёт, который включает информацию о количестве исходных и уникальных записей, а также о месте хранения результата. Это позволяет отслеживать и документировать процесс очистки.
  • Интуитивно Понятный Интерфейс: Просто и быстро запускается через командную строку, где пользователь вводит путь к исходному файлу и название выходного файла. Uniqify делает весь процесс автоматическим и простым.
  • Самодостаточный Исполняемый Файл: В результате работы вы получаете один исполняемый файл .exe, который не требует установки дополнительных зависимостей или Python. Легко распространять и использовать на других компьютерах.

Как это работает:

  1. Загрузите ваш файл: Укажите путь к текстовому файлу, содержащему список юзернеймов или других данных.
  2. Выберите имя выходного файла: Укажите название для нового файла, в который будут записаны уникальные записи.
  3. Получите результаты: Uniqify обработает файл, удалит дубликаты и создаст новый файл с уникальными данными. Кроме того, будет сформирован отчёт, чтобы вы могли легко проследить за выполненными действиями.
Uniqify — это ваш надежный помощник в управлении списками и данных, позволяющий упростить и ускорить процесс очистки от дубликатов. Не теряйте время на рутинные задачи — доверяйте их Uniqify!



Код:
def remove_duplicates(input_file, output_file, report_file):
    import chardet

    def detect_encoding(file_path):
        with open(file_path, 'rb') as file:
            raw_data = file.read(10000)  # Читаем часть файла для определения кодировки
        result = chardet.detect(raw_data)
        return result['encoding']

    def read_file_with_encoding(file_path, encoding):
        with open(file_path, 'r', encoding=encoding) as file:
            return file.readlines()

    try:
        # Определение кодировки файла
        encoding = detect_encoding(input_file)
        print(f"Используемая кодировка: {encoding}")

        # Чтение списка юзернеймов из файла
        try:
            usernames = read_file_with_encoding(input_file, encoding)
        except UnicodeDecodeError:
            print(f"Ошибка: не удалось прочитать файл с кодировкой {encoding}. Попробуем latin1.")
            usernames = read_file_with_encoding(input_file, 'latin1')
            encoding = 'latin1'

        # Удаление пробелов и дубликатов
        cleaned_usernames = [username.strip() for username in usernames]
        unique_usernames = list(set(cleaned_usernames))

        # Запись уникальных юзернеймов в новый файл
        with open(output_file, 'w', encoding='utf-8') as file:
            for username in unique_usernames:
                file.write(f"{username}\n")

        # Создание отчёта
        with open(report_file, 'w', encoding='utf-8') as report:
            report.write(f"Обработан файл: {input_file}\n")
            report.write(f"Изначальное количество юзернеймов: {len(usernames)}\n")
            report.write(f"Уникальных юзернеймов: {len(unique_usernames)}\n")
            report.write(f"Файл с уникальными юзернеймами сохранён как: {output_file}\n")

        print(f"Операция завершена успешно. Отчёт сохранён как {report_file}")

    except FileNotFoundError:
        print(f"Ошибка: файл {input_file} не найден.")
    except Exception as e:
        print(f"Произошла ошибка: {e}")

if __name__ == "__main__":
    import os

    # Запрашиваем путь к начальному файлу и название выходного файла
    input_file = input("Введите путь к начальному файлу с юзернеймами: ").strip()
    output_file = input("Введите название выходного файла с уникальными юзернеймами: ").strip()
    report_file = "report.txt"  # Можно оставить фиксированное название для отчёта

    if not os.path.isfile(input_file):
        print(f"Ошибка: файл {input_file} не существует.")
    else:
        remove_duplicates(input_file, output_file, report_file)

Скачать UniqiFY: https://mega.nz/file/9oQgHYCB#LJZdU4YF5XSmrpTv5a_LEfwNaAy3FCpdOqycguJywXo

P.S:

Сегодня добавлю формат .exe

Протестировано с файлом, в котром список 170к юзернеймов
Работает с файлами до 1 gB

Отчёт выглядит вот так:
Изначальное количество юзернеймов: 172210
Уникальных юзернеймов: 13167
Файл с уникальными юзернеймами сохранён как: output.txt

Не обязательно это должны быть юзернеймы, любой список любых слов чиститься от дублей
 
Последнее редактирование:
Пожалуйста, обратите внимание, что пользователь заблокирован
Сразу напиши, что удаление дублей не работает с большими файлами.
170к строк отработал без проблем. Насколько большой файл имеется ввиду?
 
170к строк отработал без проблем. Насколько большой файл имеется ввиду?
Больше 1gb к примеру. Что бы сортировать такие файлы одного .readlines() будет маловато.
Еще не понятно, что есть юзернеймы? Какой формат строк должен быть?
username? email:pass? разделитель?
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Больше 1gb к примеру. Что бы сортировать такие файлы одного .readlines() будет маловато.
Еще не понятно, что есть юзернеймы? Какой формат строк должен быть?
username? email:pass? разделитель?
Нет, просто список. Не обязательно userrnames. Всё что угодно. Софт убирает дубли из списка в файле .txt
 
Последнее редактирование:
Пожалуйста, обратите внимание, что пользователь заблокирован
У меня есть АП ULP и вариант им почистить его от дублей? 500гб вес... за*бался искаться софт для удаление дублей в ULP
Этот софт с таким большим весом работать, к сожалению, не будет
 
У меня есть АП ULP и вариант им почистить его от дублей? 500гб вес... за*бался искаться софт для удаление дублей в ULP

Терминал, линукс (ну или WSL):

Код:
sort -T /path/to/temp/dir -u file.txt > output.txt

Параметры:
  • -T /path/to/temp/dir — указывает путь к директории для временных файлов (например, на диск с большим свободным пространством).
  • -u — сохраняет только уникальные строки, что исключает необходимость использования uniq.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх