Манипулирование строками в Python - PullRequest
0 голосов
/ 05 января 2010

Я пытаюсь написать команду, но мне не нужна длинная строка, которая выглядит неопрятно. Я ищу, чтобы добавить строки вместе, которые будут выполнены, как по команде. У меня есть код ниже, который является частью функции электронной почты:

msg = MIMEText("The nightly build status was a SUCCESS\n\nBuild File: http://www.python.org\n\n Build Results File: http://10.51.54.57/sandboxes/", project, "\n")

Это показывает одну строку, я надеюсь на лучший способ сделать это. Я пробовал приведенный ниже код, но он не работает.

msg = MIMEText("The nightly build status was a SUCCESS\n\nBuild File: ")
msg += MIMEText("http://www.python.org\n\n Build Results File: ")
msg += MIMEText("http://10.51.54.57/sandboxes/", project, "\n")

Спасибо за любую помощь.

Я попробовал приведенный ниже код, но получил:

msg = MIMEText("""The nightly build status was a SUCCESS\n\n
   Build File: """,  
   build_file, """
   \n\n 
   Build Results File: """, 
   build_file, """
   \n\n
   Sandbox Folder:""", 
   sandbox, """ 
   \n\n
   Antibrick File: """,
   antibrick, "\n\n")

Теперь я получаю сообщение:

Traceback (most recent call last):
  File "test_email.py", line 45, in <module>
    if __name__ == '__main__': myObject = email_success()
  File "test_email.py", line 32, in email_success
    antibrick, "\n\n")
TypeError: __init__() takes at most 4 arguments (10 given)

Есть идеи?

Спасибо S.Mark, я попробовал это, но когда письмо отправлено, оно не является гиперссылкой, а отправлено как:

The nightly build status was a SUCCESS


Build File: ('http://10.67.54.57/sandboxes/', '2010-01-05/new_sandbox', 'basebuild') 



Build Results File: ('http://10.67.54.57/sandboxes/', '2010-01-05/new_sandbox', 'basebuild') 



Sandbox Folder: ('http://10.67.54.57/sandboxes/', '2010-01-05/new_sandbox')  



Antibrick File: 

Ответы [ 6 ]

5 голосов
/ 05 января 2010

Как насчет

msg = MIMEText(
"The nightly build status was a SUCCESS\n\n"
"Build File: http://www.python.org\n\n"
"Build Results File: http://10.51.54.57/sandboxes/"
, project
, "\n"
)

Или

msg = MIMEText("""The nightly build status was a SUCCESS

Build File: http://www.python.org

Build Results File: http://10.51.54.57/sandboxes/""", project, "\n")

Или

msg = MIMEText("The nightly build status was a SUCCESS\n\n"
"Build File: http://www.python.org\n\n"
"Build Results File: http://10.51.54.57/sandboxes/"
, project, "\n")

ОБНОВЛЕНИЕ : потому что ОП добавил еще один вопрос

msg=MIMEText("""The nightly build status was a SUCCESS\n\n
    Build File: %s
    \n\n 
    Build Results File: %s
    \n\n
    Sandbox Folder: %s 
    \n\n
    Antibrick File: """ % (build_file,build_file,sandbox),
    antibrick, 
    "\n\n"
)
5 голосов
/ 05 января 2010

Попробуйте:

msg = MIMEText("""The nightly build status was a SUCCESS

Build File:
http://www.python.org

Build Results File: 
http://10.51.54.57/sandboxes/""", project, "\n")

Если проблема с дополнительным пробелом в начале каждой строки, удалите их с помощью регулярного выражения (r'^\s+')

3 голосов
/ 05 января 2010

Почему бы не

msg= MIMEText("The nightly build status was a SUCCESS\n\nBuild File: "+ \
  "http://www.python.org\n\n Bu..... ") 

и т.д.

(т.е. использовать обратную косую черту продолжения строки).

Также обратите внимание, что каждый из них даст вам abcdef

s ="abc" "def"

s= "abc" \
     "def"

Также

 s="""xyz
    wvu"""

дает вам

'xyz\nwvu'
1 голос
/ 05 января 2010

Python поддерживает многострочные строки с использованием тройных кавычек:

text = """The nightly build status was a SUCCESS\n\nBuild File: 
http://www.python.org\n\n Build Results File: 
http://10.51.54.57/sandboxes/"""
msg = MIMEText(text, project, "\n")
0 голосов
/ 05 января 2010

Хм, какой именно модуль вы используете? Я предполагаю, что это устарело, потому что современный интерфейс email (если я правильно угадал ваши намерения) В частности, для создания MIMEText объекта вы используете этот класс . Подпись

email.mime.text.MIMEText(_text[, _subtype[, _charset]])
0 голосов
/ 05 января 2010

Вы можете использовать тройные кавычки

>>> s="""The nightly build status was a SUCCESS

Build File: http://www.python.org

Build Results File: http://10.51.54.57/sandboxes/"""

>>> msg=MimeType(s,project,"\n")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...