NameError:未定义名称“urlstring”

时间:2017-10-08 06:18:14

标签: python python-2.7

当我尝试运行这个简单的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'未定义

2 个答案:

答案 0 :(得分:0)

不确定它是否是拼写错误,但是当您为urlstringfile分配值时,您还有一个空格。

使用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