Форум сайта python.su
0
Привет форумчане!
Не профи в питоне, поэтому прошу вашей помощи.
Здесь http://pastebin.com/Gkcd6xUf пример скрипта.
В файле определена функция для преобразования строкового представления даты в datetime, а также функция, тестирующая вышеуказанную функцию. Проблема в том, что если запускать скрипт через терминал (я запускал из каталога со скриптом “python test.py”), периодически вместо последней пустой строки выводится случайная строка из выведенных раньше, а иногда даже выводится полностью командная строка. Никак не могу этого объяснить. Если кто-то сталкивался и знает причину, прощу дать знать. ОС Windows 7 x64, Python 2.7.9 x32.
Офлайн
857
from __future__ import print_function from datetime import date, datetime DATE_STR_FORMATS = {7: "%m.%Y", 10: "%d.%m.%Y", 16: "%d.%m.%Y %H:%M"} def strToDatetime(dateStr): try: dateTime = datetime.strptime(dateStr, DATE_STR_FORMATS[len(dateStr)]) except Exception: dateTime = None return dateTime testList = ["05.2015", "01.06.2015", "01.12.2015 23:15", "12.12.99"] for i in testList: print(strToDatetime(i))
>>> from __future__ import print_function >>> from datetime import date, datetime >>> >>> DATE_STR_FORMATS = {7: "%m.%Y", 10: "%d.%m.%Y", 16: "%d.%m.%Y %H:%M"} >>> >>> def strToDatetime(dateStr): ... try: ... dateTime = datetime.strptime(dateStr, DATE_STR_FORMATS[len(dateStr)]) ... except Exception: ... dateTime = None ... return dateTime ... >>> testList = ["05.2015", "01.06.2015", "01.12.2015 23:15", "12.12.99"] >>> >>> for i in testList: ... print(strToDatetime(i)) ... 2015-05-01 00:00:00 2015-06-01 00:00:00 2015-12-01 23:15:00 None >>>
nikbirdЭто велосипед, имитирующий функционал модуля unittest (посвежее).
а также функция, тестирующая вышеуказанную функцию
Отредактировано py.user.next (Июль 31, 2015 12:20:42)
Офлайн
0
unittest это хорошо. Вопрос был совершенно другой.
Проблема в том, что если запускать скрипт через терминал (я запускал из каталога со скриптом “python test.py”), периодически вместо последней пустой строки выводится случайная строка из выведенных раньше. Т.е. последние 3 строки вывода должны быть такие:
1 2 Passed: 4 3
3 -------------- ------------------------- -------------------
Офлайн
0
С вышеприведенным кодом абсолютно аналогичная ситуация. Вместо последней пустой строки может появиться случайная строка, выведенная раньше.
Офлайн
0
Проверил вывод в терминале Linux. Никакой пустой строки в конце нет, как, собственно, и должно быть. Очень похоже на баг в терминале Windows.
Офлайн