-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

没有错误检查的三行RubberBand:

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

我建议检查这个问题。

避免在 URL 中使用逗号,这是我的建议。

我可以在 URL 中使用逗号吗?

于 2012-06-05T13:32:21.973 回答
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 回答