我正在开发一个名为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 #!"
答案 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)
答案 3 :(得分:0)
这似乎对我很有用:
import urllib
(fn,hd) = urllib.urlretrieve('http://host.com/file.py')
execfile(fn)
我更喜欢使用标准库,因为我使用与第三方软件捆绑的python(abaqus),这使得添加包非常令人头痛。