Функция Python для печати использования командной строки для программы с многострочным отступом строки

Я хочу сделать этот код:

def usage():

    print(
        """
Usage examples:

Test deployment:
       $ fab [noinput] test deploy

Staging deployment:
       $ fab [noinput] staging deploy

Production deployment:
       $ fab [noinput] production deploy
""")

, чтобы выглядеть следующим образом:

def usage():

    print(
        """
        Usage examples:
        Test deployment:
            $ fab [noinput] test deploy
        Staging deployment:
          $ fab [noinput] staging deploy
        Production deployment:
          $ fab [noinput] production deploy
        """
    )

, но это дает разные результаты. Каков наилучший способ написать это?

69 голосов | спросил noisy 18 PM00000030000001031 2014, 15:59:10

4 ответа


77

Вы можете использовать textwrap.dedent , чтобы удалить общие пробелы с начала всех строк в многострочной строке:

>>> import textwrap
>>> print(textwrap.dedent(
        """
        Usage examples:
        Test deployment:
            $ fab [noinput] test deploy
        Staging deployment:
            $ fab [noinput] staging deploy
        Production deployment:
            $ fab [noinput] production deploy
        """
))

Usage examples:
Test deployment:
    $ fab [noinput] test deploy
Staging deployment:
    $ fab [noinput] staging deploy
Production deployment:
    $ fab [noinput] production deploy

Как говорится в документах:

  

Это может быть использовано для того, чтобы строки с тремя кавычками выстроились в линию с левым краем дисплея, все еще представляя их в исходном коде с отступом.

ответил jonrsharpe 18 PM00000040000004031 2014, 16:35:40
23

Для небольших фрагментов текста я обычно закрываю двойные кавычки и открываю их на следующей строке. Затем вам придется добавлять новые строки самостоятельно, используя \n, хотя:

print(
    "Usage examples:\n"
    "Test deployment:\n"
    "    $ fab [noinput] test deploy\n"
    "Staging deployment:\n"
    "    $ fab [noinput] staging deploy\n"
    "Production deployment:\n"
    "    $ fab [noinput] production deploy\n"
)
ответил rednaw 19 AM00000010000003931 2014, 01:53:39
17

Когда мне нужно использовать текст-текст или справочный текст о программе или модуле, в начале исходного кода есть еще одна опция:

#!/bash/python  
"""  
Usage examples, Test deployment,  
and any other text you like  
"""

И когда мне нужно распечатать его где-нибудь в программе:

print(`__doc__`)
ответил henkidefix 9 TueEurope/Moscow2014-12-09T13:27:00+03:00Europe/Moscow12bEurope/MoscowTue, 09 Dec 2014 13:27:00 +0300 2014, 13:27:00
6

Также вы можете использовать метод .join():

def usage():

    print('\n'.join([        
        'Usage examples:',
        'Test deployment:',
        '    $ fab [noinput] test deploy',
        'Staging deployment:',
        '    $ fab [noinput] staging deploy',
        'Production deployment:',
        '    $ fab [noinput] production deploy'        
        ]))
ответил Vasyalisk 30 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 30 Sep 2016 13:04:20 +0300 2016, 13:04:20

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132