项目场景:
使用Embedding+MLP训练推荐系统,使用tf.keras.utils.get_file读取本地文件
问题描述:
读取文件路径出错,原码如下:
training_samples_file_path = tf.keras.utils.get_file("trainingSamples.csv",
"file://H:/Desktop/SparrowRecSys-master/SparrowRecSys-master/src/main"
"/resources/webroot/sampledata/trainingSamples.csv")
原因分析:
tf.keras.utils.get_file一般是用来读取URL文件,这里读取本地文件的路径格式不对,少了一个/
为了迎合网络化的趋势,Windows的地址风格(C:\ABC\def\ghi及\\计算机名\文件夹\文件)向网络地址风格作了一次兼容变换:
file表示协议类型
://后面是机器的网络地址(IP地址)
/后面是文件夹(目录)和文件名
整体形如:
file://机器的IP地址/目录/文件
对于本地机器,机器的IP地址变成127.0.0.1或LocalHost或干脆什么也不写。
对于本地机器,根目录下的目录是Windows下的盘符,如“C:”、“D:”等。
file://127.0.0.1/C:/ 本地C盘
file://localhost/D:/ 本地D盘
file:///E:/ 本地E盘
需要注意的是,最后面的/是必不可少的,且file协议,通常只能在Windows Explorer和Micosoft IE中使用!
解决方案:
将斜杠加入,修改后代码如下:
training_samples_file_path = tf.keras.utils.get_file("trainingSamples.csv",
"file:///H:/Desktop/SparrowRecSys-master/SparrowRecSys-master/src/main"
"/resources/webroot/sampledata/trainingSamples.csv")