python - Python 3.8.3“找不到文件”消息
问题描述
我目前正在学习“Hands-On Machine Learning with Scikit-Learn, Keras and TensorFlow”一书。我尝试运行以下示例,但是没有成功。链接正常,pandas 安装正确,os、tarfile 和 urllib 是系统包。尽管如此,我还是收到以下错误消息(尝试过 Jupyter 和 Spyder):
import os
import tarfile
import urllib
import pandas as pd
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()
def load_housing_data(housing_path = HOUSING_PATH):
csv_path = os.path.join(housing_path, "housing.csv")
return pd.read_csv(csv_path)
housing = load_housing_data()
print(housing)
Jupyter 中的错误消息:
-------------------------------------------------- ------------------------- FileNotFoundError Traceback(最近一次调用最后一次)在 21 return pd.read_csv(csv_path) 22 ---> 23 Housing = load_housing_data() 24 住房.head()
在 load_housing_data(housing_path) 19 def load_housing_data(housing_path = HOUSING_PATH): 20 csv_path = os.path.join(housing_path, "housing.csv") ---> 21 return pd.read_csv(csv_path) 22 23 Housing = load_housing_data()
~\Miniconda3\lib\site-packages\pandas\io\parsers.py in read_csv(filepath_or_buffer, sep, delimiter, header, names, index_col, usecols, squeeze, prefix, mangle_dupe_cols, dtype, engine, converters, true_values, false_values, skipinitialspace,skirows,skipfooter,nrows,na_values,keep_default_na,na_filter,详细,skip_blank_lines,parse_dates,infer_datetime_format,keep_date_col,date_parser,dayfirst,cache_dates,迭代器,块大小,压缩,数千,十进制,lineterminator,quotechar,quoting,doublequote,escapechar,注释、编码、方言、error_bad_lines、warn_bad_lines、delim_whitespace、low_memory、memory_map、float_precision) 684) 685 --> 686 return _read(filepath_or_buffer, kwds) 687 688
~\Miniconda3\lib\site-packages\pandas\io\parsers.py in _read(filepath_or_buffer, kwds) 450 451 # 创建解析器。--> 452 parser = TextFileReader(fp_or_buf, **kwds) 453 454 如果是块大小或迭代器:
~\Miniconda3\lib\site-packages\pandas\io\parsers.py in init (self, f, engine, **kwds) 934 self.options["has_index_names"] = kwds["has_index_names"] 935 --> 936 self._make_engine(self.engine) 937 938 def close(self):
~\Miniconda3\lib\site-packages\pandas\io\parsers.py in _make_engine(self, engine) 1166 def _make_engine(self, engine="c"): 1167 if engine == "c": -> 1168 self ._engine = CParserWrapper(self.f, **self.options) 1169 else: 1170 if engine == "python":
~\Miniconda3\lib\site-packages\pandas\io\parsers.py in init (self, src, **kwds) 1996 kwds["usecols"] = self.usecols 1997 -> 1998 self._reader = parrs.TextReader (src, **kwds) 1999 self.unnamed_cols = self._reader.unnamed_cols 2000
pandas._libs.parsers.TextReader 中的 pandas_libs\parsers.pyx。初始化()
pandas_libs\parsers.pyx 在 pandas._libs.parsers.TextReader._setup_parser_source()
FileNotFoundError:[Errno 2] 没有这样的文件或目录:'datasets\housing\housing.csv'
如果有人花时间重现/提供输入代码是否返回错误消息,我将不胜感激。
非常感谢!
解决方案
本地文件"datasets/housing/housing.csv"
仅在您调用时创建
fetch_housing_data()
您的代码示例不调用此函数。尝试在housing = load_housing_data()
.