本地执行位于Web服务器上的python文件

时间:2012-06-05 12:35:50

标签: python web exec

我正在开发一个名为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 个答案:

答案 0 :(得分:3)

RubberBand三行没有错误检查:

import requests
def execute_from_url(url): 
    exec(requests.get(url).content)

答案 1 :(得分:0)

您应该在return区块中使用if (url == None):语句,因为没有必要继续执行您的功能。

代码中的哪些内容是错误,是否存在完整的回溯,因为带有逗号的URI可以使用urlparse模块解析。

调用httplib.ResponseNotReady时可能是CORE = conn.getresponse().status吗?

没关系,错误消息,就是我快速测试你的代码并重新使用相同的连接对象。我看不出你的代码中会出现什么错误。

答案 2 :(得分:0)

我建议查看这个问题。

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

Can I use commas in a URL?

答案 3 :(得分:0)

这似乎对我很有用:

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

我更喜欢使用标准库,因为我使用与第三方软件捆绑的python(abaqus),这使得添加包非常令人头痛。