2010-01-05 8 views
0

J'essaye d'écrire une commande mais je ne veux pas d'une longue ligne qui semble désordonnée. Je cherche à ajouter les chaînes ensemble pour être exécuté comme sur commande. J'ai un code ci-dessous qui fait partie d'une fonction e-mail:Manipulation de chaîne en 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") 

Cela montre la ligne une, j'espère une meilleure façon de le faire. J'ai essayé le code ci-dessous, mais cela ne fonctionne pas.

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

Merci pour toute aide.

J'ai essayé le code ci-dessous mais je reçois:

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

Maintenant, je reçois le message:

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) 

Toutes les idées?

Merci Saint Marc, j'ai essayé cela, mais quand l'e-mail est envoyé, il est pas un lien hypertexte mais envoyé comme:

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

Veuillez spécifier l'erreur que vous avez. –

+0

Probablement que 'MIMEText' ne peut pas être concaténé ensemble comme ça. –

+0

l'erreur dit tout !! vous avez 10 arguments passés à MIMEText. Construisez votre message correctement. – ghostdog74

Répondre

5

Que diriez-vous

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

Ou

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

Ou

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

MISE À JOUR: car OP a ajouté une autre question

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

Essayez:

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

Si l'espace supplémentaire à la début de chaque ligne est un problème, les enlever avec un regexp (r'^\s+')

0

vous pouvez utiliser des guillemets triples

>>> 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 prend en charge les chaînes multi-lignes en utilisant des triples guillemets:

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

Pourquoi ne pas

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

etc.

(par exemple, utilisez la barre oblique inverse de continuation).

Notez également que les éléments suivants vous bénéficiez d'un abcdef

s ="abc" "def" 

s= "abc" \ 
    "def" 

En outre,

s="""xyz 
    wvu""" 

vous donne

'xyz\nwvu' 
-1

Hmm, quel est le module exactement utilisez-vous ? Je devine, qu'il est déprécié, parce que l'interface moderne est email (si j'ai deviné vos intentions correctement). Plus précisément, pour créer un objet MIMEText, vous devez utiliser this class. La signature est

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