Tigran
вот это поворот
Алексей
Я правильно понимаю, что он от файла ищет вверх по дереву папок, а когда находит, то что через точку начинает искать вниз?
Tishka17
Не относительно текущего каталога
Tishka17
Естественно для всяких py.test это по-другому, они сами пути меняют
Tishka17
Не ищет он вверх
Maxim
Помогите с таской. У меня есть асинхронный генератор. async def my_gen(query): for _ in query: # обработка запроса и выдача первой части результатов yield result asyncio.sleep(3) Нужно получать запрос юзера с телеграма и запускать этот генератор. @bot.message_handler(regexp='(.*?)') async def send_result(message): result = await my_gen(message) await bot.send_message(result) Получив часть результатов, он уходит в asyncio.sleep() на 3 секунды. Мне надо отправить сообщение с этими результатами во время паузы, а затем продолжить работу генератора.
Tishka17
Мне вот nose2 нравится
Tigran
можно жоска прям сделать PYTHONPATH=. python src/tests/test_config.py
Алексей
Так и запускай через раннер какой-нибудь
Это слишком простой путь) я хотел разобраться в чем проблема, в принципе запускать через Pycharm получается
Tigran
правда, как это выглядит в шиндовс, я не знаю
Tishka17
Раннеры меняют питонпас. По умолчанию в него входит папка где лежит запускаемый файл
Tishka17
Вверх от него никакой поиск не делается
Алексей
Примерно ясно, спасибо
Pavel
Примерно ясно, спасибо
import sys print(sys.path) , например. посмотри, где ты находишься в момент запуска :)
Алексей
import sys print(sys.path) , например. посмотри, где ты находишься в момент запуска :)
['C:\\project\\Netology\\python_adv\\homework_2_1\\src\\tests', 'C:\\Python36\\python36.zip', 'C:\\Python36\\DLLs', 'C:\\Python36\\lib', 'C:\\Python36', 'C:\\Python36\\lib\\site-packages']
Maxim
async for
Спасибо
Pavel
правда, как это выглядит в шиндовс, я не знаю
о боже. получилось только вот так: C:\>set PYTHONPATH=X:\somepath & python -c "import sys; print('\n'.join(sys.path))" X:\somepath C:\Users\<username>\AppData\Local\Programs\Python\Python36-32\python36.zip C:\Users\<username>\AppData\Local\Programs\Python\Python36-32\DLLs C:\Users\<username>\AppData\Local\Programs\Python\Python36-32\lib C:\Users\<username>\AppData\Local\Programs\Python\Python36-32 C:\Users\<username>\AppData\Local\Programs\Python\Python36-32\lib\site-packages шиндовс всё таки лютая дрянь
Tishka17
Не надо так
Tishka17
Юзай раннеры тестов
Tishka17
Либо клади запускаемый файл на самый верх
Pavel
Не надо так
да это было скорее к вопросу "а как это вообще в виндах сделать"
Tishka17
Положить наверх файл вида from src app.test_config import test_main test_main()
Anonymous
Пацаны, вопрос.
Anonymous
После каждой функции надо ставить ; в питоне ?
Anonymous
Спасибо
Tishka17
Tishka17
Я периодически забываю что так можно
Pavel
это сильно облегчает жизнь пришедшим из C
Tishka17
Давайте ещё from __future__ import braces
Anonymous
Жоска
Anonymous
Тут каждые 10 мин кто-то заходит
Pavel
Давайте ещё from __future__ import braces
к отступам быстрее привыкаешь, чем отвыкаешь от ; хотя это индивидуально, конечно, и зависит от того, чем вначале мозг вывихнут
Maxim
Почему скрипт сначала ищет все результаты, и только потом освобождает очередь и позволяет отправить сообщение? @dp.message_handler(regexp='(.*?)') async def get_user_query(message): results = [] try: async for res in search(message.text): results.append(res) except: # todo: if 503 change user-agent here pass await bot.send_message(message.chat.id, results[:5])
Tishka17
Потому что сенд один
Maxim
Потому что сенд один
А что не так? Генератор возвращает несколько результатов, процесс переходит к этому сенду, он отправляет. Разве не так должно быть?
Maxim
Ну ты заполняешь результаты, потом делаешь сенд после завершения цикла.
А можно как-нибудь приостановить цикл и отправить результаты после первого же append'a?
Tishka17
Засунь сенд в цикл :)
Maxim
Засунь сенд в цикл :)
В таком случае оно отправит вообще всё, а мне надо только первых 5 результатов
Tishka17
Блин, ну выйди из цикла когда 5 будет
Maxim
Блин, ну выйди из цикла когда 5 будет
Точно, спасибо. Сегодня вообще не соображаю)
Владислав
Всем привет, может кто-нибудь знает решение такой проблемы, у меня в файле записано примерно такое выражение: ...#1234\n TEXT\n TEXT\n ....#4321\n, мне нужно считать информацию между индификаторами (т.е. между #1234 и #4321) но строчек между ними может быть произвольное количество, я так понимаю, что нет какого-то специального инструмента, кроме считывания до поиска определенного шаблона в строке?
Кіт ✙
предварительно пройтись циклом по этим всем строкам
Кіт ✙
for string in ..
Danylo
def update(self, target): self.state = self.camera_func(self.state, target.rect) но в ошибке пишет:
Danylo
self.state = self.camera_func(self.state, target.rect) AttributeError: 'function' object has no attribute 'rect'
Danylo
Как исправить?
Владислав
Зачем предварительно? Можно и на лету, я понимаю, что можно регулярными выражениями искать строку, когда уже считывать не нужно.
Tishka17
Понять что ты туда передал
Danylo
Ага спасибо! шас попробую исправить)
Владислав
Ну понятно...
Vladimir
Есть ИБешники тут?
Anonymous
Олды тут?
Denis
Есть ИБешники тут?
Им в интернет нельзя
Vladimir
Им в интернет нельзя
Так наоборот :)
Artur Rakhmatulin
Им в интернет нельзя
с убынтсы с флешки с ноута с горбушки с симки с вокзала с серого телефона с разбора в районе омска
Tishka17
Как это не нужен сервер?
Tishka17
А если у меня телефон, планшет и комп. И допусти комп не вести, телефон и планшет будут синкаться?
Denis
Серверлесс, щас так модно
Denis
А если у пк не белый айпи
Tishka17
Серверлесс, щас так модно
Да не. Сервер на компе, как я понял
Igor
Ребят, помогите решить. Я итерируюсь по строкам в csv. два столбца. Первый - строковые данные, могут повторяться. Второй - целочисленные данные. a,2 a,3 b,1 Нужно создать словарь, в котором будет сумма по ключу: {'a': 5, 'b':1} Как это сделать? не могу понять.
Denis
Лучше бы зукипер поднял на всех устройствах
Pavel
Лучше бы зукипер поднял на всех устройствах
вот это ты с козырей конечно зашёл
Igor
Обычный цикл же
что в самом цикле?
Igor
Синтаксис не понимаю, как словарю добавлять новые значения или к старым добавлять если есть