我正在做一个简单的功能来发送带有Mutt的邮件。有时我需要发送附件,有时不需要,因此,我需要检查参数“ attachment”是否包含某些内容。现在,我的代码如下:
def sendMail(destino,asunto,cuerpo,adjunto):
try:
os.system('echo "' + cuerpo + '" | mutt -s "' + asunto + '" ' + destino)
如何检查“ adjunto”(附件变量)是否包含某些东西并仅在有附件的情况下才将“ -a adjunto”添加到命令中?我知道我可以执行常规的“ if”语句并在有附件的情况下使用不同的os.system,但是我想知道是否有任何内联检查的方法。类似于“ ..... asunto +'“'+ destino((如果adjunto = true,则为(('+'+ adjunto))”)
PS:我知道代码还没有完成,但是我想知道如何有效地检查附件。
答案 0 :(得分:0)
您可以使用adjunto的默认值,可以在定义函数时使用它,如下所示:
def sendMail(destino, asunto, cuerpo, adjunto=None):
try:
os.system('echo "' + cuerpo + '" | mutt -s "' + asunto + '" ' + destino)
您还可以通过或命令使用语言hack:
adjunto=None
print(adjunto or 'a')
Output:
a
它不会为您要注入的字符串添加任何内容。
您应该使用''。format函数,它的功能更强大。
os.system('echo "{}" | mutt -s "{}" {}'.format(cuerpo, asunto, destino)
答案 1 :(得分:0)
您可以这样做:
destino + ((" " + adjunto) if adjunto else "")
但是您可能不应该这样做,除非您非常确保附件的名称确实是文件名而不是某些恶意的shell命令。并考虑使用subprocess
模块而不是os.system
。
答案 2 :(得分:0)
您可以在Python中使用单行if语句:output if condition else other_output
您的示例如下所示:
'-a {}'.format(adjunto) if adjunto != None else ''
所以您的代码可能是:
adjunto = '-a {}'.format(adjunto) if adjunto != None else ''
os.system('echo "' + cuerpo + '" | mutt -s "' + adjunto + '" ' + destino)
答案 3 :(得分:0)
def sendMail(destino,asunto,cuerpo,adjunto = None):
adjunto_mandato = ' -a ' + adjunto if adjunto is not None else ''
mandato = 'echo "' + cuerpo + '" | mutt -s "' + asunto + '" ' + destino + adjunto_mandato
try:
os.system(mandato)
except Exception as e:
print(e)
这是我能想到的最简单的“内联”方式,可以完成您的要求。我认为您需要权衡读取代码和内联代码的能力,因为如果您删除了您不应该执行的Try块,则可以使用三元运算符进行系统调用:
os.system( )(如果adjunto并非其他)os.system( )
布宜诺斯艾利斯!