• Закрывается ли в таком случае поток и невредно ли так делать?

    trapwalker
    @trapwalker Куратор тега Python
    old_stalin, тут надо, всё же, послушать доводы Сергей Горностаев, ведь каждый может ошибаться, даже я.=)
  • Закрывается ли в таком случае поток и невредно ли так делать?

    trapwalker
    @trapwalker Куратор тега Python
    old_stalin, почему это не закрытых?
    Вот в исходниках:
    def start_new_thread(function, args, kwargs=None): # real signature unknown; restored from __doc__
        """
        start_new_thread(function, args[, kwargs])
        (start_new() is an obsolete synonym)
        
        Start a new thread and return its identifier.  The thread will call the
        function with positional arguments from the tuple args and keyword arguments
        taken from the optional dictionary kwargs.  The thread exits when the
        function returns; the return value is ignored.  The thread will also exit
        when the function raises an unhandled exception; a stack trace will be
        printed unless the exception is SystemExit.
        """
        pass

    По идее завершение или исключение в функции b() должно останавливать тред.
  • Как определить папку в Python по имени+дате создания?

    trapwalker
    @trapwalker Куратор тега Python
    Elbro,
    In [1]: import itertools                                                        
    
    In [5]: files = [ 
       ...: 'Имя_1_Время_00_00', 
       ...: 'Имя_2_Время_00_01', 
       ...: 'Имя_1_Время_00_02', 
       ...: 'Имя_5_Время_00_03', 
       ...: 'Имя_5_Время_00_04', 
       ...: ]                                                                       
    
    In [6]: splited_names = [name.split('_') for name in files]                                                                                                      
    
    In [7]: splited_names                                                                                                                                            
    Out[7]: 
    [['Имя', '1', 'Время', '00', '00'],
     ['Имя', '2', 'Время', '00', '01'],
     ['Имя', '1', 'Время', '00', '02'],
     ['Имя', '5', 'Время', '00', '03'],
     ['Имя', '5', 'Время', '00', '04']]
    
    In [8]: splited_names.sort()                                                                                                                                     
    
    In [9]: splited_names                                                                                                                                            
    Out[9]: 
    [['Имя', '1', 'Время', '00', '00'],
     ['Имя', '1', 'Время', '00', '02'],
     ['Имя', '2', 'Время', '00', '01'],
     ['Имя', '5', 'Время', '00', '03'],
     ['Имя', '5', 'Время', '00', '04']]
    
    In [12]: for group, items in itertools.groupby(splited_names, key=lambda v: v[:2]): 
        ...:     print('-' * 10) 
        ...:     for item in items: 
        ...:         print(item, '{}-{}-{}-{}{}'.format(*item)) 
        ...:          
        ...:                                                                                                                                                         
    ----------
    ['Имя', '1', 'Время', '00', '00'] Имя-1-Время-0000
    ['Имя', '1', 'Время', '00', '02'] Имя-1-Время-0002
    ----------
    ['Имя', '2', 'Время', '00', '01'] Имя-2-Время-0001
    ----------
    ['Имя', '5', 'Время', '00', '03'] Имя-5-Время-0003
    ['Имя', '5', 'Время', '00', '04'] Имя-5-Время-0004
  • Как определить папку в Python по имени+дате создания?

    trapwalker
    @trapwalker Куратор тега Python
    Elbro, так а в чем проблема разбить по символу '_' или послайсить по конкретным кускам строки и превратить строку в кортеж. Кортежи можно сортировать потом ка угодно по любым составным частям.
    Не понимаю в чем ваша проблема.
    Потом, после сортировки, можно itertools.groupby использовать, чтобы сгруппировать как у вас
  • Как получать аудиозаписи от пользователей с помощью бота в ТГ?

    trapwalker
    @trapwalker
    Ban Daban, а что тут рекомендовать? Я прокомментировал ваш вопрос. Немного потроллил его осмысленность.
    А задача типовая, если вы не знаете с чего начинать эту задачу и как сформуоировать более конкретный вопрос, то вам стоит осваивать более базовые основы.
  • Как получать аудиозаписи от пользователей с помощью бота в ТГ?

    trapwalker
    @trapwalker
    Я тут послушал как люди на гитаре играют и мне понравилось. Тоже решил начать играть на гитаре.
    Как сделать так, чтобы гитара издавала не унылое бренчание, а крутую мелодию, чтоб за душу брало.
    Если можно скиньте информацию, хочу сам разобраться. И если есть советы, буду рад!

    И ждём, что люди будут скидывать в каком порядке надо за струны дергать.
  • Доказано ли, и можно ли сжать произвольные данные до 20 байтов к примеру?

    trapwalker
    @trapwalker
    ThunderCat, не увиливай. Держи вот онлайн эмулятор, в котором этот модуль работает:
    https://replit.com/@sergyp1/checkfalserandommd5#ma...
    По этому заменил рандомом обычным, ибо нам не страшно предсказание по процессорозависимым алгоритмам для примера

    по этому брал хэш, у которого достаточно большая энтропия.

    Это у вас у ПХП-шников такой "обычный рандом"? md5 от нескольих символов? И это у вас "достаточно большая энтропия"? Достаточно большая для чего? Для того, чтобы у тебя "рандомный" набор байт начал сжиматься?
    а набивать чистым рандомом файл долго

    Да ничего не долго. Сколько тебе надо. чтобы убедиться? Вот миллион байт, но можно 6 на 7 заменить и будет 10 миллионов, хватит?
    python3 -c "import sys, random; all(sys.stdout.buffer.write(bytes([random.randint(0, 255)])) for _ in range(10**6)) and None">rnd1m.bin

    Будет работать даже на винде.

    Суть от этого не поменяется, достаточно большие наборы будут сжиматься, даже тупыми алгоритмами сжатия "в лоб", типа лвз. Более продвинутые будут сжимать чуть получше

    Да как же это не поменяетя суть-то?! Сжимаются данные или нет зависит от энтропии. Чем она больше, тем данные сжимаются хуже. Белый шум не сжимается, а твой самодельный рандомайзер из md5 и счетчика имеет низкую энтропию, что ты и продемонстрировал. Поди вот теперь любым архиавтором сожми нормальный рандом.

    И вот что поражает - упирается до последнего. Уже обделался по полной, а все равно на своём стоит. Слезай уже, отдавишь.
  • Доказано ли, и можно ли сжать произвольные данные до 20 байтов к примеру?

    trapwalker
    @trapwalker
    ThunderCat, ох уж эти ПХП-шники...
    Тогда уж получайте рандомную последовательность хотя бы не через задницу:
    <?php
    file_put_contents('rnd2.bin', random_bytes(1000000));

    62c2ed80556b0682588057.png

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

    Но, всё же, я не очень рассчитываю, что тебя это убедит, поэтому объясню на пальцах.
    У любого набора данных есть такое свойство, как энтропия. У текста она ниже, ведь в нём много повторяющихся слов, а вот в белом шуме энтропия будет гораздо выше.

    Текст на любом языке сожмётся гораздо лучше, нежели просто рандомный набор байтов со спектром белого шума.

    Чем, по-твоему, отличается файл, который сильно сжимается от файла, который лабо? Вот энтропией и отличается.
    Если сжать, скажем, томик Тургенева в виде текста любым архиватором, файл сожмётся в разы. Но повторно сжать этот архив уже не получится, ведь энтропия этого набора данных уже будет гораздо выше.

    Иначе любые данные можно было бы сжимать неорганиченно сильно, но это противоречит логике.
    Даже если вам не занимать самомнения, рекомендую подтянуть теорию.

    P.S.
    Вот та строка кода на PHP - первая моя строка кода на этом языке, и я, почему-то догадался заглянуть вдокументацию, чтобы не делать генерацию рандомного набора айтов на костылях. Почему многие ПХП-шники позволяют себе такое наплевательство? Может поэтому у этого, в общем-то, навено, неплохого языка такая дурная слава? Порог вхождения делает своё дело? Так питон проще освоить, почему среди джунов-питонистов меньше такой дичи? Хотя я, наверно, предвзят. Статистики у меня на самом деле нету.
  • Доказано ли, и можно ли сжать произвольные данные до 20 байтов к примеру?

    trapwalker
    @trapwalker
    ThunderCat, вы, похоже, плохо понимаете проблему.
    Из вашего примера получается уже, что в словаре четыре элемента, а значит для кодирования индекса нужно уже минимум 2 бита. Это значит последовательности в два бита через такой словарь УЖЕ заменять не целесообразно. А ваи еще надо как-то маркировать словарные блоки в потоке и маркерная последовательность не должна встречаться.
    В общем что вам объяснять...
    Попробуйте вот на реальном примере:
    dd if=/dev/urandom bs=1 count=1000000 | gzip > f.gz

    И посмотрите какой получится размер у результирующего файла.
    Да, придумать синтетический пример, где какой-то вариант данных сожмётс можно, но это не случайные данные. Случайные данные не сожмутся, а наоборот увеличатся в размере за счет накладных расходов на формат архива.

    Это не вы, случаем, тот школьник, что изобрел тот чудесный архиватор, который всё в один байт запаковать может, но разархиватор еще не готов?
  • Доказано ли, и можно ли сжать произвольные данные до 20 байтов к примеру?

    trapwalker
    @trapwalker
    очевидно что среди прочих комбинаций может быть как ровно 50 сочетаний 01 подряд, или 100 единиц, или 100 нулей, или 50 единиц и потом 50 нулей.

    ThunderCat, другими словами вы тут хотите сказать, что есть некоторая вероятность, что рандомная битовая последовательность может быть сжата. Можно доаже посчитать эту вероятность. К примеру что будет 100 нулей вероятность 1/2^100.
    В итоге вероятность выпадения сильно сжимаемых рандомных последовательностей просто исключительно мала, зато слабо сжимаемых последовательностей среди общего многообразия возможностей подавляющее количество.
    Выходит, что произвольные данные в общем таки не сжимаются.
  • Доказано ли, и можно ли сжать произвольные данные до 20 байтов к примеру?

    trapwalker
    @trapwalker
    ThunderCat, а что вы подразумеваете под "произвольностью" данных?
    Лично я подразумеваю набор случайных чисел со спектром белого шума.
    Если бы нам понадобилось архивировать (в смысле сжимать) ключи для одноразовых шифроблокнотов (если вы понимаете о чем речь), то сжать их не вышло бы ни на один бит.
    То же можно сказать и о полезных сообщениях заширфрованных шумоподобным ключом.

    В общем, жду пояснений и надеюсь ваша претензия лишь троллинг, а не реальная тупость.
  • Здравствуйте. Как создать удаление правил на Aiogram?

    trapwalker
    @trapwalker Куратор тега Python
    Gagak, проблема в том, что на данном уровне вашего понимания вам невозможно ответить на ваш вопрос.
    Если вам скажут, что нужно сохранить идентификатор сообщения, а потом вызвать метод для его удаления, то вы спросите как именно это делать. Если вам скажут, что нужно создать БД и сохранять в нем статус принятия правил. то вы снова не поймёте такой ответ.
    Я вам так и написал, что на свормулированный вот так вопрос можно в качетсве ответа только прислать готовое решение, а ресурс этот не дл яготовых решений, а для конкретных вопросов. Здесь ни у кого нет ресурсов, чтобы становиться вам индивидуальным репетитором. Никому здесь не понятно что конкретно вам не ясно. Никто здесь не знает что у вас уже готово из функциональности описанного вами бота.

    Такое ощущение (судя по вопросу), что у вас просто есть какая-то расплывчатая идея и вы даже не знаете с чего начать. Как вам ответить на такой размытый неконкретный вопрос? Вы читали доументацию по библиотеке? не понятно. Вы пробовали удалять сообщение согласно документации? наверно нет, ведь иначе вопрос был бы конкретнее.
  • Здравствуйте. Как создать удаление правил на Aiogram?

    trapwalker
    @trapwalker Куратор тега Python
    Это не ресурс для фрилансеров. Здесь отвечают на вопросы, а не решают задачи, и не выполняют задания.
    Распишите развёрнуто и понятно суть проблемы. То, что вы написали - не объясняет задачу.
    Приведите свою попытку решения и объясните проблемы с которыми столкнулись.
    Сформулируйте конкретный вопрос, а так, как тут сделано у вас.
  • Как разбить строку на спискок?

    trapwalker
    @trapwalker Куратор тега Python
    ComingFlex, до исправления ваш вопрос выглядел иначе:
    Как разбить страку на спискок?
  • Как разбить строку на спискок?

    trapwalker
    @trapwalker Куратор тега Python
    Как разбить страку

    Не пойму у вас тут "т" лишнее или просто букву перепутали?
  • Как конвертировать в дату и время число формата 1654043400000?

    trapwalker
    @trapwalker Куратор тега Python
    Так само собой, надо раделить сперва на тысячу. Там милисекунды. Ну и учесть часовой пояс еще. У вас не МСК? На час отличается?
  • Как красиво использовать strptime с различными форматами?

    trapwalker
    @trapwalker Куратор тега Python
    kicherov_maxim, ага. У меня так же. Ещё форматы засовываю дефолт-параметром в эту же функцию, а перечень на уровне модуля лежат в виде константы, но за счет параметра можно и подменить, а можно добавить плюсиком в список в аргументе.
    Ещё момент. Вы смешали в одной функции и парсинг и отбрасывание времени. Парсьте универсально,а отбрасывайте потом.
  • Python https как исправить?

    trapwalker
    @trapwalker Куратор тега Python
    Пробел точно ни при чем. Не pep8, но синтаксис валидный.
  • Закачка в Telegram останавливает интернет?

    trapwalker
    @trapwalker
    Drno, Вот-вот, хоть на кофейной гуще гадай - никаких подробностей.
    Может там роутер на посленем издыхании перегревается или блок питания у него с высохшими конденсаторами и ток не тянет, гапряжение проседает и ротуер подвисает. А может провайдер рубит. В общем, вариантов много, а гадать - не вариант