簡體   English   中英

給定字符串中的代碼參考

[英]Reference for code in given string

我正在運行一個自動消息傳遞服務,該服務發送HTML和純文本電子郵件。 我正在使用的腳本將收到3個參數。 To,主題和包含4種不同類型數據的字符串。

問題是,我無法弄清楚如何分別引用這四個值。 我已經對sys.argv [3]進行了幾次嘗試,它應該顯示這些給定的參數。 我的問題是,如何讓Python將它們識別為4個不同的值,而不是一個字符串? 因為我在寫的電子郵件中引用了它們,所以將這些電子郵件寫入代碼本身。

 #!/usr/bin/env python

list1=[0,1,2,3,4];

import mimetypes, os, smtplib, sys, untangle
from email import encoders
from email.mime.audio import MIMEAudio
from email.mime.base import MIMEBase
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.utils import formatdate
from email.utils import make_msgid

me = "xx@yy.nl"
you = "yyy@xx.nl"
DESTINATION=sys.argv[1]
SUBJECT=sys.argv[2]
MESSAGE=sys.argv[3]
PASS='yyyxxxyyy'
SRVSMTP='mysmtpsever:587'

msg = MIMEMultipart('alternative')
msg['Subject'] = SUBJECT
msg['From'] = me
msg['To'] = you
msg['Date'] = formatdate()
msg['Message-ID'] = make_msgid()

text = """
email with references here
"""
html = """
html email with references here 
"""

part1 = MIMEText(text, 'plain')
part2 = MIMEText(html, 'html')

msg.attach(part1)
msg.attach(part2)

smtpserver = smtplib.SMTP(SRVSMTP)
smtpserver.ehlo()
smtpserver.starttls()
smtpserver.ehlo()
smtpserver.login(me, PASS)

smtpserver.sendmail(me, you, msg.as_string())
smtpserver.quit()

監視系統粘貼的字符串在BASH中。 我想到的是XML的工作原理,就像這樣。

<Root>
<Child1> {HOST.NAME} </Child1>
<Child2> {TRIGGER.NAME} </Child2>
<Child3> {TRIGGER.STATUS} </Child3>
<Child4> {TRIGGER.SEVERITY} </Child4>
</Root>

我感覺自己正在朝着正確的方向思考,但是我無法解決這個問題。 任何建議表示贊賞。

因此,既然您說您可以完全控制第三個參數,那么我建議您用一個不會在元素中出現的符號來分隔參數的四個元素。 通常是分號; 用於,但是您可以使用任何想要的字符。 然后,您將使用以下python行獲取這些元素:

element1, element2, element3, element4 = sys.argv[3].split(';')

如果出於某種原因要使用xml,則可以執行以下操作:

import xml.etree.ElementTree as ET
root = ET.fromstring(sys.argv[3])
child1, child2, child3, child4 = (c.text for c in root.children)

如果您不能保證一個字符不會出現在文本中,則可以使用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM