python中的SyntaxError。 Noob寻求理解

时间:2014-03-09 04:19:27

标签: python syntax

我正在关注一些在线python教程,我现在两次遇到这个语法错误代码,无法弄清楚是什么问题。

这是我的代码:

import urllib
import re

htmlfile = urllib.urlopen("http://finance.yahoo.com/q?s=AAPL")
htmltext = htmlfile.read()

regex = '<span id="yfs_l84_aapl">(.+?)</span>'
pattern = re.compile(regex)
price = re.findall(pattern, html)

print price

我正在使用Enthought Python Distribution软件包(python版本2.7.3)

以下是运行上述脚本时的语法错误。

 Traceback (most recent call last):
  File "E:\python\scripts\stocks.py", line 4, in <module>
    htmlfile = urllib.urlopen("http://finance.yahoo.com/q?s=AAPL")
  File "e:\python27\lib\urllib.py", line 86, in urlopen
    return opener.open(url)
  File "e:\python27\lib\urllib.py", line 207, in open
    return getattr(self, name)(url)
  File "e:\python27\lib\urllib.py", line 291, in open_http
    import httplib
  File "e:\python27\lib\httplib.py", line 79, in <module>
    import mimetools
  File "e:\python27\lib\mimetools.py", line 6, in <module>
    import tempfile
  File "e:\python27\lib\tempfile.py", line 34, in <module>
    from random import Random as _Random
  File "E:\python\scripts\random.py", line 1
    def random
             ^
SyntaxError: invalid syntax

我试着四处搜寻,了解发生了什么,但无济于事。什么是python试图告诉我所有这些回溯线,为什么我会得到语法错误?

2 个答案:

答案 0 :(得分:6)

如果查看堆栈跟踪,在底部,您可以看到语法错误位于名为E:\python\scripts\random.py的文件中。此脚本是您添加到系统中的脚本,它似乎包含语法错误。因为它名为random并且位于Scripts目录中,所以它“覆盖”了内置的random库。

删除或重命名该文件,你应该好好去。

答案 1 :(得分:1)

module的导入由sys.path控制。对于程序执行import module的第一个近似值,解释器依次访问sys.path上的目录。它在每个目录中查找module.pyc文件和module.py文件,如果两者都找不到,则转到下一个文件。当它找到一个或两个时,如果.py.pyc更新(换句话说,如果自上次编译文件以来源已被修改,或者编译后的文件不存在)然后解释器编译.py文件并尝试写入它。无法保证您的进程能够在该特定目录中写入。

在识别出正确的文件后,解释器创建一个新的命名空间,用该命名空间作为本地执行模块的代码,然后将模块的名称与刚刚创建的命名空间绑定。因此,如果您在module中绑定了一个名称,则它应该(在模块代码中以任何__all__分配为模)在导入模块中可用作module.name

我怀疑这个问题已经教会了为什么在你自己的代码中复制系统库的名称并不是一个好主意 - 这是我们都必须学习的一课!