提问人:Mia Blake 提问时间:11/12/2023 最后编辑:Mia Blake 更新时间:11/20/2023 访问量:47
如何在同一存储库中使用 python 读取 github 文件?
How do I to read a github file with python in the same repository?
问:
当我尝试使用我的代码打开同一存储库中的文件时,我不断收到 FileNotFoundError。我想在“SpecLines_App”中使用“classifier_model.pkl”
import streamlit as st
import numpy as np
import pickle
import pandas as pd
#https://github.com/mblk3/MLM_Atomic_Spec_Lines/blob/02f6a04db06b459169ea0d19c347146ea1ad17d8/classifier_model.pkl
#joblibFile = open('code_/classifier_model.pkl', 'rb')
#joblibFile = open(url, 'rb')
#model = pickle.load(joblibFile)
model = pd.read_pickle(r'classifier_model.pkl')
^这是我尝试过的,我不确定为什么它不起作用。
我怎样才能打开它?
流光:classify-atomic-spec-lines.streamlit.app
github:github.com/mblk3/MLM_Atomic_Spec_Lines
答:
1赞
J_H
11/12/2023
#1
您正在尝试打开相对路径名,因此 CWD 很重要。您可以使用以下方法了解它的内容:
import os
print(os.getcwd())
在运行此程序之前,请考虑对新目录执行操作。cd
打开绝对路径名可能更可取。
这应该获取 git 存储库的位置:
from pathlib import Path
...
repo_top = Path(__file__ + "/..").resolve()
print(repo_top)
model = pd.read_pickle(repo_top / 'classifier_model.pkl')
0赞
Alex Silva
11/20/2023
#2
该文件似乎不存在在运行 streamlit 应用程序的当前 git 分支中。
因此,您将获得 .classifier_model.pkl
SpecLines_App
FileNotFoundError
要解决这个问题,至少有两种解决方案。选择哪一个更适合您的需求:
将该文件包含在当前的 git 分支中。 然后应该工作。
classifier_model.pkl
model = pd.read_pickle('classifier_model.pkl')
如果文件不存在,请在运行时下载该文件(示例代码如下):
classifier_model.pkl
...
import requests
from pathlib import Path
def download_model():
url = 'https://github.com/mblk3/MLM_Atomic_Spec_Lines/raw/02f6a04db06b459169ea0d19c347146ea1ad17d8/classifier_model.pkl'
local_filename = url.split('/')[-1]
response = requests.get(url)
open(local_filename, 'wb').write(response.content)
def is_model_found(file):
model_path = Path(file)
found = model_path.is_file()
if not found:
st.write(f"DEBUG: File `{model_path.absolute()}` not found. Let's download it! :arrow_down:")
download_model()
else:
st.write(f"DEBUG: File `{model_path.absolute()}` found! :sunglasses:")
...
model_filename = "classifier_model.pkl"
is_model_found(model_filename)
model = pd.read_pickle(model_filename)
评论