python - 使用脚本在 IDLE 中设置变量

标签 python python-3.x beautifulsoup python-idle

在 Win7 x64 上使用 Python 3.2。我有一个脚本,我想在每次启动 IDLE 时运行它。这是我的脚本:

import sys
from bs4 import BeautifulSoup

sys.setrecursionlimit(2000)

soup = BeautifulSoup()
def soupSetup(file_name, encode_type):
    soup = BeautifulSoup(open("C:\\Python32\\html\\"+file_name+".html", encoding=encode_type))

这样一切就绪,我所要做的就是传递 soupSetup()我想使用的 html 文件,我可以开始处理数据。

我的问题是 - 如果我在使用 print(soup.prettify()) 时按原样使用代码除了一个空行,我没有得到任何返回。如果我在运行 print 语句时不首先实例化类,我会得到:

Traceback (most recent call last):
  File "<pyshell#22>", line 1, in <module>
    print(soup.prettify())
NameError: name 'soup' is not defined

对于那些不熟悉 BeautifulSoup 的人,汤是 <class 'bs4.BeautifulSoup'> 的一个实例.

如何让 soup 对象在我的脚本之外持久存在?

最佳答案

您使用语句 soup = BeautifulSoup() 创建了一个模块全局名称 soup。然后,在函数 soupSetup 中,您想要将 soup 名称重新分配给另一个 BeautifulSoup() 对象,这次使用数据。

但是:函数内的名称是该函数的局部名称,不会在该函数外保留。所以你最终没有重新分配全局 soup 名称,而是在函数内部创建一个新的单独的 soup 变量,然后在函数存在时将其删除。全局 soup 没有被改变。这就是为什么您在使用 soup 变量时得到您首先创建的空 BeatifulSoup() 对象的原因。

您需要做的是告诉函数您要重新分配全局名称,如下所示:

def soupSetup(file_name, encode_type):
    global soup
    soup = BeautifulSoup(open("C:\\Python32\\html\\"+file_name+".html", encoding=encode_type))

应该可以了。 此外,您不必设置 soup = BeautifulSoup(),设置什么并不重要,因为它会被函数覆盖。只需这样做:

soup = None

完整的代码最终应该是这样的:

import sys
from bs4 import BeautifulSoup

sys.setrecursionlimit(2000)

soup = None
def soupSetup(file_name, encode_type):
    global soup
    soup = BeautifulSoup(open("C:\\Python32\\html\\"+file_name+".html", encoding=encode_type))

关于python - 使用脚本在 IDLE 中设置变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13756941/

相关文章:

python - 使用pd.read_csv(),指定数据为np.float32,但得到字符串

python | Selenium |继续输出页面源代码,而不是我手动检查元素时看到的内容

Python,BeautifulSoup,重新: How to convert extracted texts to dictionary from web?

python - 获取QListView中选定的项目

python - 如何使用groupby创建新表并删除重复项

python - 我如何生成一个新的随机数

python - 如何使用 Python、BeautifulSoup、re 从 URL 获取 eBay 反馈

python - 如何将两个不同 python 列表的元素插入到 MySQL 表中的两个不同行?

python - 在条形图动画的每次迭代中添加新的数据箱

python - Scrapy 分页 XHR 400 错误请求