我的聊天脚本需要执行四个参数:
#!/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:])
我从另一个名为listen.py的python脚本中调用此chat.py,如下所示:
...
import chat
...
chat.main(['-c', 'user@server.com', '-u', 'fromme@server.com', '-p', 'password', '-m', 'Yo Yo Yo Wassup'])
...
这是我的问题,我一直在尝试在我的参数中使用变量。如果我有以下内容:
from = "fromme@server.com"
to = "toyou@server.com"
pass = "password"
message = "Yo Yo Yo Wassup"
我想在chat.main中使用这些变量:
chat.main(['-c', '%s', '-u', '%s', '-p', '%s', '-m', '%s' & (from,to,pass,message)])
问题是我得到了一些错误,例如“String expected,tuple found”或“not not all converted to string”
我做错了什么?我一直在以前的python行中使用这种格式,但没有在参数中使用。
原因是这些变量以后会变为动态变量,而是从数据库中提取。