Вы всегда можете запустить UPX на вашем exe после того, как вы его создали.
Поскольку Python на самом деле просто вызывает функцию языка C strftime (3)
на вашей платформе, возможно, есть символы формата, которые вы могли бы использовать для контролировать ведущий ноль; попробуйте man strftime
и посмотрите. Но, конечно, результат не будет переносимым, о чем вам напомнит руководство по Python. : -)
Я бы попытался использовать вместо этого объект нового стиля datetime
, который имеет такие атрибуты, как t.year
и t.month
и t.day
, и пропустите их через обычное мощное форматирование с помощью оператора %
, который поддерживает управление ведущими нулями. Подробнее см. http://docs.python.org/library/datetime.html . Еще лучше использовать оператор "". Format ()
, если он есть в вашем Python, и пусть он будет еще более современным; он также имеет множество вариантов форматирования чисел. См .: http://docs.python.org/library/string.html#string-formatting .
%
, которое поддерживает управление ведущими нулями. Подробнее см. http://docs.python.org/library/datetime.html . Еще лучше использовать оператор "". Format ()
, если он есть в вашем Python, и пусть он будет еще более современным; он также имеет множество вариантов форматирования чисел. См .: http://docs.python.org/library/string.html#string-formatting . мощное форматирование оператора %
, которое поддерживает управление ведущими нулями. Подробнее см. http://docs.python.org/library/datetime.html . Еще лучше использовать оператор "". Format ()
, если он есть в вашем Python, и пусть он будет еще более современным; он также имеет множество вариантов форматирования чисел. См .: http://docs.python.org/library/string.html#string-formatting . Here is the documentation of the modifiers supported by strftime()
in the GNU C library. (Like people said before, it might not be portable.) Of interest to you might be:
%e
instead of %d
will replace leading zero in day of month with a spaceIt works on my Python (on Linux). I don't know if it will work on yours.
Некоторые платформы могут поддерживать указание ширины и точности между %
и буквой (например, 'd' для дня месяца), согласно http: // docs.python.org/library/time.html - но это определенно непереносимое решение (например, не работает на моем Mac ;-). Может быть, вы можете использовать замену строки (или RE для действительно неприятного формата) после strftime
, чтобы исправить это? например:
>>> y
(2009, 5, 7, 17, 17, 17, 3, 127, 1)
>>> time.strftime('%Y %m %d', y)
'2009 05 07'
>>> time.strftime('%Y %m %d', y).replace(' 0', ' ')
'2009 5 7'
Я считаю, что фильтр форматирования даты в шаблоне Django работает быстро и легко. Он удаляет ведущие нули. Если вы не против импортировать модуль Django, проверьте это.
http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
from django.template.defaultfilters import date as django_date_filter
print django_date_filter(mydate, 'P, D M j, Y')
На самом деле у меня была та же проблема, и я понял, что если вы добавите дефис между %
и буквой, вы можете удалить ведущий ноль.
Например % Y /% - M /% - D
.
Это работает только на UNIX (Linux, OS X), а не Windows (включая Cygwin). В окнах вы бы использовали #
, например % Y /% # м /% # D
.
Для % d
вы можете преобразовать в целое число с помощью int ()
, тогда он автоматически удалит ведущий 0 и станет целым числом. Затем вы можете преобразовать обратно в строку, используя str ()
.