javascript - 如何通过javascript将选定的文件路径传递给python脚本
问题描述
我正在使用eel为我的项目创建一个简单但干净的 GUI。在这个项目中,我有一个自定义数据库,我在需要时腌制/更新/取消腌制。从本地网络服务器,我选择文件并单击提交按钮。然后我将文件目录传递给以后在 python 脚本中读取。我的结构如下;
HTML
我有两个简单的元素,一个按钮和一个输入
<input type="file" id="file-upload">
<input class="btn btn-success" type="submit" onClick="get_input_directory()" value="Send">
JS
function get_input_directory() {
var data = document.getElementById("file-uploader").value
eel.get_input(data)
}
Python
目前我只是打印目录如果我做对了。
@eel.expose
def get_input(data):
print(data)
我计划稍后做的是使用脚本将数据库解压缩到我的程序中:
with open(file_dir, "rb") as f:
mdl = pickle.load(f)
return mdl
但我的数据库文件打印为:
C:/fakepath/database.file
我在网上搜索,发现这是浏览器实现的安全措施,但我尝试了 FileReader 方法将文件直接传递到 unpickling 函数,但也未能说明不存在这样的文件。
我应该用什么来解决这个问题,或者有没有办法将目录传递到 python 脚本中,这会更容易,因为后端已经为项目完成了很多工作。任何帮助表示赞赏。提前致谢!
解决方案
这与 JS 没有完全存在于您的计算机有关。最好的办法是在 python/eel 中添加文件处理程序。因为 python 确实可以完全访问您计算机的路径:
@eel.expose
def btn_ResimyoluClick():
root = Tk()
root.withdraw()
root.wm_attributes('-topmost', 1)
folder = filedialog.askdirectory()
return folder
推荐阅读
- apache-spark - 在 pyspark 中处理具有多种记录类型的单个文件
- objective-c - macOS,Carbon.framework,如何使用 TISRegisterInputSource 方法注册新的输入源
- javascript - 选中时复选框值不会更改
- r - 在 Fargate 上运行 R 脚本时如何避免使用 AWS S3 环境变量
- javascript - Puppeter 将页面评估的返回值保存为 csv
- php - 试图从laravel中的产品评论雄辩中获取评论者的名字
- javascript - 如何在 Angular 中单击时发送 *ngFor 的参数
- vaadin - 打包 JAR/WAR 时 Vaadin 不显示正确的网站图标
- sql - 如何在 SQL 中对用逗号分隔的序列号进行分组
- python - Raspberry Pi 4 上的 Visual Studio Code -- Interpereter 路径从 3.7.3 更改为 3.8