【发布时间】:2015-04-06 16:41:12
【问题描述】:
这个问题与 python 脚本调用中的其他 python 类似,但没有一个对我有用。
我有一个使用 Python XMPP 发送聊天消息的聊天脚本。语法如下:
python chat.py -c "recipient@example.com" -u "sender@example.com" -p "secret" -m "message"
脚本:
#!/usr/bin/python
import sys
import argparse
import xmpp
def main(argv):
parser = argparse.ArgumentParser()
parser.add_argument('-c', dest='contact', required=True)
parser.add_argument('-u', dest='username', required=True)
parser.add_argument('-p', dest='password', required=True)
parser.add_argument('-m', dest='message', required=False, default='')
args = parser.parse_args(argv)
if (args.message == '') and not sys.stdin.isatty():
for line in sys.stdin:
args.message = args.message + line
jid = xmpp.protocol.JID(args.username)
jabber = xmpp.Client(jid.getDomain(), debug=[])
jabber.connect(server=(jid.getDomain(), 5222) )
jabber.auth(jid.getNode(), args.password)
jabber.send(xmpp.Message(args.contact, args.message.strip()))
if __name__ == "__main__":
main(sys.argv[1:])
如您所见,它需要 4 个参数。
现在我有另一个正在监听传感器的 python 脚本。我试图让它在检测到传感器读数时发送聊天消息,所以在 listen.py 中我正在这样做:
...
import chat
...
chat.main('-c "chatto@server.com" -u "chatfrom@server.com" -p "password" -m "Yo Yo Yo Wassup"')
....
我也尝试过 subprocess.call 但可能没有正确的语法。两个python脚本都在同一个目录中。因此,对于那些寻找特定问题的人来说,如何在提供四个必需参数的同时从 listen.py 中调用 chat.py?
【问题讨论】:
标签: python xmpp subprocess