我正在使用Aurelien Geron的书“Hands-on machine learning with scikit-learn and tensorflow”。
第一次使用Jupyter。
我正在尝试遵循以下代码。
我的问题是,当我用下面的代码运行单元格时:
import os
import tarfile
import urllib
DOWNLOAD_ROOT = "https://raw.githubusercontent.com/ageron/handson-ml2/master/"
HOUSING_PATH = os.path.join("datasets", "housing")
HOUSING_URL = DOWNLOAD_ROOT + "datasets/housing/housing.tgz"
def fetch_housing_data(housing_url=HOUSING_URL, housing_path=HOUSING_PATH):
os.makedirs(housing_path, exist_ok=True)
tgz_path = os.path.join(housing_path, "housing.tgz")
urllib.request.urlretrieve(housing_url, tgz_path)
housing_tgz = tarfile.open(tgz_path)
housing_tgz.extractall(path=housing_path)
housing_tgz.close()
单元计算永远不会结束,In[*]:
永远不会变成类似In[1]:
的东西。
所以,我认为这是一个问题的初始网址,因为它显示了一个错误,当我访问它通过我的互联网浏览器。
因此,我将其更改为DOWNLOAD_ROOT = "https://github.com/ageron/handson-ml2/tree/master/"
。
现在我得到In[1]:
。但是,当我运行fetch_housing_data()
时,我得到:
---------------------------------------------------------------------------
ReadError Traceback (most recent call last)
<ipython-input-6-bd66b1fe6daf> in <module>
----> 1 fetch_housing_data()
<ipython-input-5-ef3c39b342d8> in fetch_housing_data(housing_url, housing_path)
9 tgz_path = os.path.join(housing_path, "housing.tgz")
10 urllib.request.urlretrieve(housing_url, tgz_path)
---> 11 housing_tgz = tarfile.open(tgz_path)
12 housing_tgz.extractall(path=housing_path)
13 housing_tgz.close()
~\Anaconda3\lib\tarfile.py in open(cls, name, mode, fileobj, bufsize, **kwargs)
1576 fileobj.seek(saved_pos)
1577 continue
-> 1578 raise ReadError("file could not be opened successfully")
1579
1580 elif ":" in mode:
ReadError: file could not be opened successfully
为什么会发生这种情况,我该如何解决?
3条答案
按热度按时间i2byvkas1#
你有没有重新启动你的内核并尝试再次运行?
你所看到的是不可复制的。
上面粘贴的第一个代码块可以按照编写的那样工作。不需要修改它。
我只是在下面运行了这个,然后当我在另一个单元格中运行
fetch_housing_data()
时,它工作了:你确定这不是一个你看不到细胞完成的艺术品?
如果你想独立验证,你可以像我一样在其他地方运行它。我只是通过运行here并按下底部的
launch binder
链接来测试它。然后我把你的代码粘贴到出现的单元格中。在运行了这两个单元格之后,我在/home/jovyan/scripts/datasets/housing
上有一个目录,其内容为housing.csv housing.tgz
。utugiqy62#
oipij1gg3#
https://raw.githubusercontent.com/ageron/handson-ml2/master/
我不知道这是什么样的联系。也许有人能解释。当我输入这个链接时,我无法访问该页面。然而,它确实可以检索我在下一页解释的数据。如果我使用你上面提到的实际的github链接https://github.com/ageron/handson-ml2/tree/master/,代码无法提取数据。
我已经能够使用书中的步骤从链接中提取csv文件,方法是在“导入”中添加另一行。我添加了“import urllib.request”。这似乎对我在谷歌可乐工作。导入urllib你可能会认为urllib.request也被导入了,但事实并非如此。我不能回答为什么它是工作,但文档的urllib有'进口urllib.request'在一个例子,我采取的想法。