to post messages and comments.

Хочу книжку: "Как забыть про except и начать писать код", любая ошибка — скрипт вылетает, пришлось понапихать except'ов на всех этапах подключения и выполнения команд.

Жуйк, я тут взял pysmb и python3.4 и наваял скрипт, который тянет определенные данные с windows-шары. Все работает, код по сути вообще дефолтный:
from smb import smb.SMBConnection
conn = SMBConnection(user, password, hostname, servername, use_ntlm_v2=True, is_direct_tcp=True)
conn.connect(serverip, 445)

И вот в 3.4 все отлично работает. В 3.2 ругается, там штук 6 или 8 функций вызывают ошибку, в конце ругается на hmac(), пишет что 'str' object has no attribute 'new'. Там автор pysmb делает хэш пароля или что-то вроде того и вот в 3.2 hmac ожидает то ли bytearray, то ли еще чего.

Сталкивался кто с чем-то подобным?

//Извините, нет сейчас логов — все виртуалки на ноуте в рюкзаке, а я в транспорте. Но вопрос меня прямо изводит-)

Смотрел тут на парочку среднекрупных опенсорсных проектов на питоне, и что-то у меня от них ощущение, что там сплошной быдлокод и костыли.

Жуйк, посоветуй опенсорсный проект на питоне, на котороый который стоит ориентироваться как на образец хорошего кода.

sftp.get() порой непонятным образом зависает, ну тоесть хость доступен, но он выкачивает ~ 30kb и виснет с концами, никакого таймаута у самого stfp.get() не наблюдается, в пузоне вроде можно для любой процедуры реализовать его, но как-то замудренно...

В пузоне есть аналог find . -type f -mtime +3 -delete ? Кто не в курсах: удалить все файлы старше трех дней в текущем каталоге. Без вызова системных комманд естественно.

На работе в ревью к моему коду главный-преглавный ТМ впервые за полгода обнаружил, что я ставлю пустую строку между логическими блоками импорта: просто импорты, импорты из стдлиб, импорты из Жданги, импорты сторонних библиотек, импорты компонентов проекта. Настойчиво рекоммендовал убрать пустые строки, аргументировал тем, что плугин к его Емаксу всё равно переформатирует импорты, отсортирует по алфавиту и удалит пустые строки. Буквально на пустом месте разразился холивар, подтянулись другие питонисты. Сегодня:

*** **** accepted the changes

okay isort solved the problem, let's keep then spaces as suggested!

А ты, Жуйк, отбиваешь пустой строкой? В Жданге отбивают, в Жданга РЕСТ Фрамеворк — тоже. В Nympy — нет. В ПЕП8 по этому поводу ничего не сказано, только про порядок импортов.

Возможно ли сделать на Python 3 фоновую утилитку, которая бы отслеживала глобальные горячие клавиши и выводила, при срабатывании, нужные символы? Например чтобы по Ctrl+Shift+2 это вот такие кавычки « ». Платформа Win, но лучше кроссплатформенный вариант.
Могу на Qt, но неправославно. Могу и на C, но хочу именно на Питоне.

Гвида насрал прямо в мои штаны:

In [1]: import datetime
In [2]: dt_str = datetime.datetime.utcnow().strftime('%d.%m.%Y %h:%M:%s') # Случайно обосрался с форматом даты (должно быть %h -> %H, %s -> %S)
In [6]: datetime.datetime.strptime(dt_str, '%d.%m.%Y %h:%M:%s') # Однако, тот же формат и здесь
ValueError: 'h' is a bad directive in format '%d.%m.%Y %h:%M:%s'

И действительно, согласно доке, директив %h и %s не существует:
docs.python.org

Однако, какого-то хуя гвида за меня додумал и интерпретировал %h как %b, а %s как просто int(time.time()).

Понадобилось мне работать с RS232. Устанавливаю PySerial через wheel. А он вываливает Traceback уже при установке (которая вроде как прошла успешно). А у меня уже паранойя — я не хочу в продакшене использовать пакет, который даже установиться нормально не может.
И таких пакетов нв PyPi, которые traceback при установке показывают, дофига. Куда катится этот мир...

Сегодня оказалось, что система тупит. То, что стабильно работало, вдруг по непонятной причине не работает.
Сел разбираться, ничего не понятно.

Оказалось, что неделю назад мне понадобилась программка под python2, а школоарчике /usr/bin/python это python3. И я, чтобы не тратиться лишних сил, тупо
cp -s /usr/bin/python2 /usr/bin/python
А обратно вернуть, конечно, забыл.

Надо перекодировать JSON строку. Вот строка: '"[{"text":"22","correct":false},{"text":"33","correct":false},]"'. В PHP:
$s = json_decode($json, TRUE);
print_r($s);
И ничего! После php -f code.php нихера. Берем Python и print(json.loads('"[{"text":"22","correct":false},{"text":"33","correct":false},]"')) и в ответ получаем сообщение ValueError: Extra data: line 1 column 5 — line 1 column 93 (char 4 — 92). Вот. Вот! Оказывается что в строке есть лишние кавычки и нужно чтобы было '[{"text":"22","correct":false},{"text":"33","correct":false},]'. Но что же PHP? Есть функция json_last_error которая возвращает int и в документации к которой есть такой код: foreach ($json as $string) {
echo 'Decoding: ' . $string;
json_decode($string);

switch (json_last_error()) {
case JSON_ERROR_NONE:
echo ' — No errors';
break;
case JSON_ERROR_DEPTH:
echo ' — Maximum stack depth exceeded';
break;
………………………………