-2

私は、 RubberBandと呼ばれるオープン ソース プロジェクトに取り組んでいます。これは、タイトルが示すことを実行できるオープン ソース プロジェクトです。Web サーバー上にある python ファイルをローカルで実行しますが、問題が発生しました。文字列にコンマがある場合 ("http:" など)、エラーが返されます。

'''
RubberBand Version 1.0.1 'Indigo-Charlie'
http://www.lukeshiels.com/rubberband

CHANGE-LOG:

Changed Error Messages.
Changed Whole Code Into one function, rather than three.
Changed Importing required libraries into one line instead of two

'''
#Edit Below this line

import httplib, urlparse

def executeFromURL(url):
    if (url == None):
        print "!# RUBBERBAND_ERROR: No URL Specified #!"
    else:
        CORE = None
        good_codes = [httplib.OK, httplib.FOUND, httplib.MOVED_PERMANENTLY]

    host, path = urlparse.urlparse(url)[1:3]
    try:
        conn = httplib.HTTPConnection(host)
        conn.request('HEAD', path)
        CORE = conn.getresponse().status

    except StandardError:
        CORE = None

    if(CORE in good_codes):
        exec(url)
    else:
        print "!# RUBBERBAND_ERROR: File Does Not Exist On WEBSERVER #!"
4

4 に答える 4

3

エラーチェックなしの3行のRubberBand:

import requests
def execute_from_url(url): 
    exec(requests.get(url).content)
于 2012-06-05T13:41:56.277 に答える
0

関数を続行する意味がないため、ブロックでreturnステートメントを使用する必要があります。if (url == None):

コードの約がエラーである場合、コンマを含むURIがurlparseモジュールで正常に解析されるため、完全なトレースバックがありますか。

たぶんhttplib.ResponseNotReady電話するときCORE = conn.getresponse().statusですか?

そのエラーメッセージを気にしないでください、それは私があなたのコードを素早くテストし、同じ接続オブジェクトを再利用したことでした。あなたのコードで何が間違っているのかわかりません。

于 2012-06-05T12:46:07.243 に答える
0

これは私にとってはうまくいくようです:

import urllib
(fn,hd) = urllib.urlretrieve('http://host.com/file.py')
execfile(fn)

私は標準ライブラリを使用することを好みます。なぜなら、サードパーティ ソフトウェア (abaqus) にバンドルされた python を使用しているため、パッケージを追加するのが本当に面倒だからです。

于 2015-09-03T12:01:31.557 に答える
0

この質問を確認することをお勧めします。

私の提案では、URL にコンマを避けてください。

URL にコンマを使用できますか?

于 2012-06-05T13:32:21.973 に答える