Как удалить комментарии и строки документов из исходного кода Python?

Есть ли программа, которую я могу запустить следующим образом:

py2py.py < orig.py > smaller.py

Где orig.py содержит исходный код Python с комментариями и строками документации, а small.py содержит идентичный исполняемый исходный код, но без комментариев и строк документации?

Код, который изначально выглядел так:

#/usr/bin/python
"""Do something
blah blah...
"""

# Beware the frubnitz!
def foo(it):
    """Foo it!"""
    print it  # hmm?

Тогда будет выглядеть так:

def foo(it):
    print it

person Community    schedule 25.10.2009    source источник


Ответы (2)


Этот минимайзер Python выглядит так, как будто он делает то, что вам нужно.

person Community    schedule 25.10.2009
comment
Превосходно. «уменьшить» было волшебным словом. - person Bo Duke; 25.10.2009

Я рекомендую minipy. Самая убедительная причина заключается в том, что он выполняет правильный анализ абстрактного синтаксического дерева исходного кода, поэтому минимизированный код намного точнее. Я обнаружил, что более известный pyminifier имеет тенденцию генерировать код с неопределенными символьными ошибками, неверно истолкованными. кортежи и т. д. Я также получил на несколько процентов лучшие результаты сжатия с minipy. Небольшое преимущество minipy заключается в том, что его код вдвое меньше, чем у pyminifier. Им также проще управлять и интегрировать в конвейер сборки, потому что это один автономный файл Python.

person Community    schedule 14.02.2017
comment
Проголосовал за, но обратите внимание, что minipy поддерживает только Python 2. - person John McGehee; 25.02.2017
comment
@JohnMcGehee с парой тривиальных изменений я смог обойти наиболее очевидные 2-измы python, и теперь он поддерживает код python 3, который я минимизирую. Вот изменение: github.com/kanaka/minipy/commit/ - person kanaka; 25.02.2017