2010-01-05 4 views
0

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

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: 
+0

Пожалуйста, укажите, что у вас есть ошибка. –

+0

Возможно, что 'MIMEText' не может быть объединен вместе. –

+0

ошибка говорит все! у вас есть 10 аргументов, переданных в MIMEText. правильно создайте сообщение. – ghostdog74

ответ

5

Как насчет

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") 

UPDATE: потому что OP добавил еще один вопрос

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

Try:

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+')

0

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

>>> 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") 
1

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") 
3

Почему не

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

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

email.mime.text.MIMEText(_text[, _subtype[, _charset]])