从Python脚本中调用Python交互式解释器

时间:2010-06-19 14:32:38

标签: python while-loop xmlrpclib python-interactive

有没有办法从脚本中启动Python解释器,方式类似于仅使用python -i,以便保留当前脚本中的对象/命名空间等?不使用python -i的原因是脚本初始化到XML-RPC服务器的连接,如果出现错误,我需要能够停止整个程序。我无法循环直到有效输入,因为显然,我不能做这样的事情:

#!/usr/bin/python -i
# -*- coding: utf-8 -*-

import xmlrpclib

# Create an object to represent our server.
server_url = str(raw_input("Server: "))
while not server = xmlrpclib.Server(server_url):
    print 'Unable to connect to server. Please try again'
else:
    print 'Xmlrpclib.Server object `__main__.server\' of URL `', server_url, "' created"
    break
# Python interpreter starts...

,因为:

% chmod u+x ./rpcclient.py
% ./rpclient.py
Traceback (most recent call last):
  File "./rpcclient.py", line 8
    while not server = xmlrpclib.Server(server_url):
                     ^
SyntaxError: invalid syntax
>>> 

不幸的是,python -i在打印出回溯之后启动解释器,所以我不得不调用交互式解释器 - 替换脚本的执行以保留服务器连接 - 从脚本中

2 个答案:

答案 0 :(得分:2)

您是否尝试过阅读错误消息? :)

=是赋值,您需要比较运算符==

答案 1 :(得分:0)

好吧,我终于开始工作了。

基本上,我将整个try / except / else子句放在while True:循环中,else套件为{{1} }语句和break套件的结尾是except语句。结果是,如果用户放入一个没有完全兼容的XML-RPC2服务器监听的地址,它现在会不断循环。结果如下:

continue

非常感谢!

......我必须再等一天才能接受这个......