Ответы пользователя по тегу Python
  • Как мне проигнорировать этот Подкаталог "old" и прочитать данные только из списка?

    Lord_of_Rings
    @Lord_of_Rings
    Северный странник. Злой, но добрый
    Ну если я правильно понял, то:
    import os
    
    path = "data/"
    list_dir=['IRK','MGD','SAH','KHA','KAM']
    for root_dir in list_dir:
        for root, dirs, files in os.walk(os.path.join(path, root_dir)):
            for kmlfile in files:
                print(kmlfile)
    Ответ написан
  • TypeError: Parameters to generic types must be types. Got Ellipsis.?

    Lord_of_Rings
    @Lord_of_Rings
    Северный странник. Злой, но добрый
    Установить более свежую версию python или установить болле старую версию asyncpg-lite
    Ответ написан
  • Почему корутина работает без вызова в telethon?

    Lord_of_Rings
    @Lord_of_Rings
    Северный странник. Злой, но добрый
    Ошибка
    The asyncio event loop must not change after connection
    обычно возникает, когда вы пытаетесь изменить цикл событий asyncio после того, как он уже был запущен. Или пытаетесь запустить асинхронные операции вне асинхронного контекста или пытаетесь изменить цикл событий после его запуска.

    Этот код должен работать
    import asyncio
    from telethon import TelegramClient
    
    class TelegramBot:
        def __init__(self, api_id, api_hash, session_name):
            self.client = TelegramClient(session_name, api_id, api_hash)
    
        async def start(self):
            await self.client.start()
    
        async def chat_prepare(self, chat_to_work):
            messages = await self.client.get_messages(chat_to_work, limit=1)
            if len(messages) == 0:
                return -1
            m1 = messages[0].id
            return m1
    
        async def run(self, chat_to_work):
            await self.start()
            result = await self.chat_prepare(chat_to_work)
            print(f'Result: {result}')
    
    # Пример использования
    api_id = 'YOUR_API_ID'
    api_hash = 'YOUR_API_HASH'
    session_name = 'YOUR_SESSION_NAME'
    chat_to_work = 'YOUR_CHAT_ID'
    
    bot = TelegramBot(api_id, api_hash, session_name)
    
    # Запуск асинхронного контекста
    asyncio.run(bot.run(chat_to_work))
    Ответ написан
  • Почему парсер PDF документов не работает с несколькими тегами?

    Lord_of_Rings
    @Lord_of_Rings
    Северный странник. Злой, но добрый
    spoiler
    import pdfplumber
    import re
    
    def extract_unique_words_with_tag(pdf_path, tags, remove_duplicates=False):
        """
        Извлечение слов с тегом из PDF с указанием номера страницы.
    
        Args:
            pdf_path (str): Путь к PDF файлу.
            tags (list): Список тегов, по которым фильтруются слова (например, ['UPS', 'SW']).
            remove_duplicates (bool): Если True, удаляет дубли на всех страницах.
    
        Returns:
            list: Список кортежей (слово, номер страницы).
        """
        try:
            with pdfplumber.open(pdf_path) as pdf:
                all_words_with_pages = []
    
                for i, page in enumerate(pdf.pages):
                    text = page.extract_text()
                    if text:
                        lines = text.split("\n")
                        page_words = []
    
                        for line in lines:
                            words = line.split()
                            tagged_words = [
                                re.sub(r'[^a-zA-Z0-9\.\-]', '', word)
                                for word in words
                                if re.search(rf'\b\w*({"|".join(tags)})\w*\b', word)
                            ]
                            page_words.extend([(word, i + 1) for word in tagged_words])
    
                        if remove_duplicates:
                            page_words = list(set(page_words))
    
                        all_words_with_pages.extend(page_words)
    
                if remove_duplicates:
                    all_words_with_pages = list(set(all_words_with_pages))
    
                unique_words_with_pages = sorted(all_words_with_pages, key=lambda x: (x[0], x[1]))
                return unique_words_with_pages
    
        except Exception as e:
            print(f"[ERROR] Произошла ошибка: {e}")
            return []
    
    def find_unique_to_each_pdf(pdf_path1, pdf_path2, tags, remove_duplicates_for_pdf1=False, remove_duplicates_for_pdf2=False):
        """
        Находит слова, уникальные для каждого PDF файла, с указанием номера страницы.
    
        Args:
            pdf_path1 (str): Путь к первому PDF файлу.
            pdf_path2 (str): Путь ко второму PDF файлу.
            tags (list): Список тегов для поиска.
            remove_duplicates_for_pdf1 (bool): Если True, удаляет дубли в первом PDF.
            remove_duplicates_for_pdf2 (bool): Если True, удаляет дубли во втором PDF.
    
        Returns:
            tuple: Два списка — слова с номерами страниц, уникальные для первого и второго PDF.
        """
        unique_words_pdf1 = extract_unique_words_with_tag(pdf_path1, tags, remove_duplicates=remove_duplicates_for_pdf1) or []
        unique_words_pdf2 = extract_unique_words_with_tag(pdf_path2, tags, remove_duplicates=remove_duplicates_for_pdf2) or []
    
        words_only_pdf1 = set(word for word, _ in unique_words_pdf1)
        words_only_pdf2 = set(word for word, _ in unique_words_pdf2)
    
        unique_to_pdf1 = [(word, page) for word, page in unique_words_pdf1 if word not in words_only_pdf2]
        unique_to_pdf2 = [(word, page) for word, page in unique_words_pdf2 if word not in words_only_pdf1]
    
        return sorted(unique_to_pdf1), sorted(unique_to_pdf2)
    
    # Пример использования
    pdf_path1 = 'path/to/first/pdf'
    pdf_path2 = 'path/to/second/pdf'
    tags = ['UPS', 'SW']
    
    unique_to_pdf1, unique_to_pdf2 = find_unique_to_each_pdf(pdf_path1, pdf_path2, tags)
    
    print("Уникальные слова в первом PDF файле:")
    for word, page in unique_to_pdf1:
        print(f"{word} (страница {page})")
    
    print("\nУникальные слова во втором PDF файле:")
    for word, page in unique_to_pdf2:
        print(f"{word} (страница {page})")
    Ответ написан
    Комментировать
  • Как проверить доступность списка IP:Port из txt-файла?

    Lord_of_Rings
    @Lord_of_Rings
    Северный странник. Злой, но добрый
    import socket
    import re
    import subprocess
    import platform
    
    # Функция для проверки доступности IP
    def is_ip_reachable(ip):
        # Параметры для команды ping в зависимости от операционной системы
        param = '-n' if platform.system().lower() == 'windows' else '-c'
        command = ['ping', param, '1', ip]
        return subprocess.call(command) == 0
    
    # Функция для проверки доступности IP:port
    def check_ip_port(ip, port):
        if not is_ip_reachable(ip):
            return False
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        sock.settimeout(2)  # 2 секунды таймаут
        result = sock.connect_ex((ip, port))
        sock.close()
        return result == 0
    
    # Чтение списка IP:port из файла
    with open('ip.txt', 'r') as file:
        lines = file.readlines()
    
    # Регулярные выражения для извлечения IP и порта
    re_ip_port = re.compile(r"^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}):(\d+)$")
    
    # Список для хранения доступных IP:port
    available_ips = []
    
    # Проверка каждого IP:port
    for line in lines:
        match = re_ip_port.match(line.strip())
        if match:
            ip, port = match.groups()
            port = int(port)
            if check_ip_port(ip, port):
                available_ips.append(f"{ip}:{port}")
    
    # Запись доступных IP:port в новый файл
    with open('ipUP.txt', 'w') as file:
        for ip_port in available_ips:
            file.write(ip_port + '\n')
    
    print("Проверка завершена. Доступные IP:port записаны в файл ipUP.txt")
    Ответ написан
    Комментировать
  • Как пофиксить selenium.common.exceptions.ElementClickInterceptedException?

    Lord_of_Rings
    @Lord_of_Rings
    Северный странник. Злой, но добрый
    spoiler

    import time
    
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver import Chrome, ChromeOptions
    from selenium.common.exceptions import NoSuchElementException, StaleElementReferenceException
    
    
    driver = Chrome()
    url = 'https://sc2arcade.com/map-list'
    driver.get(url)
    maps_names = driver.find_elements(By.CLASS_NAME, 'title')
    options = ChromeOptions()
    options.add_argument("--disable-notifications")
    
    
    required_letters = 'qwertyuiopasdfghjklzxcvbnm'
    
    
    class MapMaker:
        def __init__(self, username, social_media_link, link_to_profile):
            self.username = username
            self.social_media_link = social_media_link
            self.link_to_profile = link_to_profile
    
        def __eq__(self, other):
            if isinstance(other, MapMaker):
                return self.value == other.value
            return False
    
        def __hash__(self):
            return hash(self.value)
    
    
    mapmakers = set()
    
    
    for map_name in maps_names:
        for required_letter in required_letters:
            for letter in map_name.text:
                if letter == required_letter:
                    driver.execute_script("arguments[0].click();", map_name)
                    map_name.click()
                    try:
                        author = driver.find_element(By.CLASS_NAME, 'v-avatar v-list-item__avatar rounded-0 v-avatar--tile').text
                        link_on_profile = driver.find_element(By.CLASS_NAME, 'player-link').text
                        social_media_link = driver.find_element(By.CLASS_NAME, 'v-btn__content').text
    
                        mapmaker = MapMaker(author, link_on_profile, social_media_link)
                        mapmakers.add(mapmaker)
                        
                        driver.back()
                        driver.refresh()
                    except NoSuchElementException:
                        pass
    
    
    print(mapmakers)
    Ответ написан
    Комментировать
  • Как исправить ошибку имени пользователя в консоли вс код?

    Lord_of_Rings
    @Lord_of_Rings
    Северный странник. Злой, но добрый
    Создайте проект в папке которая не содержит кириллицу.
    похожий вопрос
    Ответ написан
  • Почему Бот выдает ошибку KeyError: 'user_id', не может найти данные сохраненные в StateGroup?

    Lord_of_Rings
    @Lord_of_Rings
    Северный странник. Злой, но добрый
    Вы добавляете user_id в функции reg_number. Похоже, что register_client выполняется раньше reg_number.
    Ответ написан
    2 комментария
  • Telethon не определяет админов?

    Lord_of_Rings
    @Lord_of_Rings
    Северный странник. Злой, но добрый
    Telethon не определяет админов?
    Да.
    Ответ написан
  • Почему не работает диалог с телеграм-ботом?

    Lord_of_Rings
    @Lord_of_Rings
    Северный странник. Злой, но добрый
    Почему не работает диалог с телеграм-ботом?
    Не знаю. Может еще разговаривать не научился?
    Ответ написан
    Комментировать
  • Какой конвертер py файлов в exe самый быстрый?

    Lord_of_Rings
    @Lord_of_Rings
    Северный странник. Злой, но добрый
    Ну, во-первых AutoPyExe=pyinstaller. Во-вторых, забыли упомянуть Nuitka.
    А вообще соглашусь с Uncleruc1. Pyinstaller - самый распространенный, стабильный и надежный инструмент. Если, вам нужна скорость самого экзешника, то насколько я знаю Nuitka - самая быстрая (в смысле ее exe самые быстрые)
    Ответ написан
    Комментировать
  • Как исправить ошибку установки библиотеки на Python?

    Lord_of_Rings
    @Lord_of_Rings
    Северный странник. Злой, но добрый
    pip uninstall tensorflow
    pip cache purge
    pip install tensorflow
    Ответ написан
    Комментировать
  • Нажиимает коментировать но не отправляет коментарий?

    Lord_of_Rings
    @Lord_of_Rings
    Северный странник. Злой, но добрый
    Нажиимает коментировать но не отправляет коментарий?

    Да.
    можете отправить функцию?

    Нет.
    Ответ написан
    Комментировать
  • Почему тут ошибка?

    Lord_of_Rings
    @Lord_of_Rings
    Северный странник. Злой, но добрый
    slides["Кантемир"] - это словарь, а не список.
    Поддерживаю Everything_is_bad
    Ответ написан
    Комментировать
  • Статья закончена, а ответ на вопросы нет?

    Lord_of_Rings
    @Lord_of_Rings
    Северный странник. Злой, но добрый
    Прежде чем тупо копировать код, который вы не понимаете, лучше бы пошли и почитали что-нибудь про основы python.
    Ответ написан
    Комментировать
  • Как получить полное дерево импортируемых библиотек?

    Lord_of_Rings
    @Lord_of_Rings Автор вопроса
    Северный странник. Злой, но добрый
    Может быть кому-то пригодится: pipdeptree
    Ответ написан
    Комментировать
  • Почему пайчарм даёт ошибку, но когда делаю то, что он просит опять ошибка?

    Lord_of_Rings
    @Lord_of_Rings
    Северный странник. Злой, но добрый
    Не лепить код наугад, а пойти и почитать доки
    Ответ написан
    Комментировать
  • Ошибка "(" was not closedPylance в VSCode?

    Lord_of_Rings
    @Lord_of_Rings
    Северный странник. Злой, но добрый
    Вместо шести кавычек вам надо поставить три (три с одной стороны и три с другой)
    Ответ написан
    Комментировать
  • Не сохраняются данные в базу данных (SQLite)?

    Lord_of_Rings
    @Lord_of_Rings
    Северный странник. Злой, но добрый
    commit() делали?
    Ответ написан
    Комментировать
  • Какая технология актуальна для создания приложения на python под android?

    Lord_of_Rings
    @Lord_of_Rings
    Северный странник. Злой, но добрый
    Kivy, KivyMD. Но серьёзные приложения все таки лучше писать на Java.
    Ответ написан
    Комментировать