我有这个代码试图从Git Hub存储库中检索文件。
import os
import tarfile
from six.moves import urllib
import urllib.request
DOWNLOAD_ROOT = "https://github.com/ageron/handson-ml/tree/master/"
HOUSING_PATH = os.path.join("datasets", "housing").replace("\\","/")
print(HOUSING_PATH)
HOUSING_URL = DOWNLOAD_ROOT + HOUSING_PATH
print(HOUSING_URL)
print(os.getcwd())
def fetch_housing_data(housing_url=HOUSING_URL, housing_path=HOUSING_PATH):
if not os.path.isdir(housing_path):
os.makedirs(housing_path)
tgz_path = os.path.join(housing_path, "housing.tgz").replace("\\","/")
print(tgz_path)
urllib.request.urlretrieve(housing_url, tgz_path)
housing_tgz = tarfile.open(tgz_path)
housing_tgz.extractall(path=housing_path)
housing_tgz.close()
fetch_housing_data()
执行代码后,我收到此错误 ReadError:文件无法成功打开。我确实检查了实际文件大小和执行此代码后下载的文件,我发现该文件已部分下载。 那么他们以任何方式下载整个文件?在此先感谢
答案 0 :(得分:2)
最后我遇到了问题。这是我用来检索文件的链接。我不知道RAW链接应该与Git Hub存储库中的文件名一起使用(不使用文件名会给你404错误)。
所以我需要在我的问题中发布的实际代码中进行一些修改。 那是 : 从
更改链接DOWNLOAD_ROOT = "https://github.com/ageron/handson-ml/tree/master/"
对此:
DOWNLOAD_ROOT = "https://raw.githubusercontent.com/ageron/handson-ml/master/"
这个
HOUSING_URL = DOWNLOAD_ROOT + HOUSING_PATH
到
HOUSING_URL = DOWNLOAD_ROOT + "datasets/housing/housing.tgz" \\**( Actual File name is needed)**
谢谢!