-2

python -i現在のスクリプトのオブジェクト/名前空間などが保持されるように、単に使用するのと同様の方法で、 script 内から Python インタープリターを起動する方法はありますか? 使用しない理由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トレースバックを出力した直後にインタープリターを開始するため、スクリプト内から対話型インタープリターを呼び出す必要があります-スクリプトの実行を置き換えて、サーバー接続を保持します-

4

2 に答える 2

2

エラーメッセージを読んでみましたか?:)

===代わりに比較演算子が必要です。

于 2010-06-19T14:39:03.527 に答える
0

さぁ、やっと動き出しました。

try基本的に、 / except/else句全体をwhile True:ループに入れて、elseスイートをステートメントにし、スイートbreakの最後をステートメントにします。その結果、完全に準拠した XML-RPC2 サーバーがリッスンしていないアドレスをユーザーが入力すると、継続的にループするようになりました。それがどのようになったかは次のとおりです。exceptcontinue

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

import xmlrpclib, socket
from sys import exit

# Create an object to represent our server.

#server = xmlrpclib.Server(server_url) and print 'Xmlrpclib.Server object `__main__.server\' of URL `', server_url, "' created"
server_url = str(raw_input("Server: "))
server = xmlrpclib.ServerProxy(server_url)
while True:
    try:
        server.system.listMethods()
    except xmlrpclib.ProtocolError, socket.error:
        print 'Unable to connect to server. Please try again'
        server_url = str(raw_input("Server: "))
        server = xmlrpclib.ServerProxy(server_url)
        continue
    except EOFError:
        exit(1)
    else:
        break

print 'Xmlrpclib.Server object `__main__.server\' of URL `', server_url, "' created"

# Python interpreter starts...

どうもありがとうございました!

...そして、これを受け入れるには、もう 1 日待たなければなりません...

于 2010-06-20T13:04:21.700 に答える