当我尝试运行这个简单的python脚本时出现错误:
for url in urllist:
try:
file = urllib2.urlopen (url)
urlstring = file.read ()
except:
print "Can't open URL"
pass
m = [ ]
m = re.findall (
r'file:///\\results.cal.ci.spirentcom.com\\smt\\SCMSmartTest\\\d+.\d+\\BLL\d+_IL\d+\\.*?\\TC\S+tcl',
urlstring)
copyFileCounts = 1
显示以下错误:
Traceback(最近一次调用最后一次):文件 “D:\ Python \ untitled \ _version.py”,第75行,in urlstring)NameError:名称'urlstring'未定义
答案 0 :(得分:0)
不确定它是否是拼写错误,但是当您为urlstring
和file
分配值时,您还有一个空格。
使用try .. catch
时,您应该尽可能减少try
块中的代码:如果出现问题,您就会知道原因,而无需进行太多调试。
您可以使用else
条款。
try ... except语句有一个可选的else子句,当存在时,必须遵循所有except子句。如果try子句没有引发异常,那么对于必须执行的代码非常有用。
所以你的代码应该是这样的:
for url in urllist:
try:
file = urllib2.urlopen(url)
urlstring = file.read()
except IOError as e:
print "Can't open URL: {}".format(e.message)
else:
m = []
m = re.findall (..)
在捕获异常时你也应该更具体,抓住所有异常并不是一个好主意。
答案 1 :(得分:0)
使用其他答案修复代码:
m = []
for url in urllist:
try:
file = urllib2.urlopen (url)
urlstring = file.read ()
m = re.findall (r'file:///\\results.cal.ci.spirentcom.com\\smt\\SCMSmartTest\\\d+.\d+\\BLL\d+_IL\d+\\.*?\\TC\S+tcl',
urlstring)
copyFileCounts = 1
except IOError as e:
print "Can't open URL: {}".format(e.message)
做这件事是一种很好的做法,并要求宽恕,所以做任何你想做的事情,然后发现错误。EAFP