shell脚本中怎么调用python脚本中的带参函数呀

查看:123
本文介绍了shell脚本中怎么调用python脚本中的带参函数呀的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

已经可以传值了,哈哈哈!

如题呀……我是小白,求各位大神解惑!

build_using_xctool.sh
auto_send_email.py

build_using_xctool.sh 中运行 auto_send_email.py 中的 sendMessage(a,b,c,d,...) 函数,a,b,c,d,... 某些参数需要从 build_using_xctool.sh 中传过去!

事情是这样的,我在网上找了一个自动打包分发的shell脚本,然后我想在打包完成上传至fir上面之后发邮件通知自己和同事,然后又找了一个发送邮件的python脚本!

build_using_xctool.sh

#!/bin/bash

#前面的略...

python /Users/gyd/Desktop/auto_send_email.py "这是标题" "这是内容" 

auto_send_email.py

# -*- coding: UTF-8 -*-
import sys, os, re, urllib, urlparse
import smtplib
import traceback
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

password = "******"
fromaddr = "123456@qq.com"
smtpaddr = "smtp.qq.com"
toaddrs = ["654321@qq.com"]

def sendemail(title,content):
    mail_msg = MIMEMultipart()
    if not isinstance(title,unicode):
        title = unicode(title, 'utf-8')
    mail_msg['Subject'] = title
    mail_msg['From'] =fromaddr
    mail_msg['To'] = ','.join(toaddrs)
    mail_msg.attach(MIMEText(content, 'html', 'utf-8'))
    try:
        s = smtplib.SMTP_SSL("smtp.qq.com", 465)
        s.login(fromaddr,password)  #登录邮箱
        s.sendmail(fromaddr, toaddrs, mail_msg.as_string()) #发送邮件
        s.quit()
        return True

    except Exception,e:
        return flase

if sendemail(sys.argv[1], sys.argv[2]):
    print "邮件已发送!"
else:
    print "邮件发送失败!"

解决方案

Python 可以利用 sys.argv 拿到命令列上的 arguments:

$ python test.py 1 2 3

test.py:

import sys

print(sys.argv)

結果:

['test.py', '1', '2', '3']

所以你在 build_using_xctool.sh 中可以這樣調度 python:

python /Users/gyd/Desktop/auto_send_email.py subject msg toaddrs fromaddr smtpaddr password

然後在 auto_send_email.py 中:

import sys  # 自己 import sys
...

if __name__ == '__main__':
    sendmail(*sys.argv[1:])


我回答過的問題: Python-QA

这篇关于shell脚本中怎么调用python脚本中的带参函数呀的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆