gpt4 book ai didi

javascript - 在 javascript 中使用 python 输出

转载 作者:行者123 更新时间:2023-12-04 03:43:05 26 4
gpt4 key购买 nike

我们想将一个 bool 值从 python 发送到 javascript,以便我们可以在我们的 html 网站中使用它。

我们尝试使用套接字,但这对我们来说太复杂了。我们的下一个想法是使用 api,我们知道如何使用 javascript 从 api 获取信息。我们要做的是将 python bool 值发布到 api,然后使用 javascript 从 api 获取 bool 值。但我们不知道该怎么做。

我们的所有代码都使用了一个树莓派和一个硬件按钮,按下时在 python 中返回 true。

我们目前正在测试从 https://healeycodes.com/javascript/python/beginners/webdev/2019/04/11/talking-between-languages.html 中找到的代码

但是这段代码对我们不起作用。我们还使用 pycharm 作为我们的工作区,这是一个问题吗?

我们当前的 javascript 代码:

    const request = new XMLHttpRequest();
request.open("GET", url, true);
request.onreadystatechange = function() {
if (request.readyState === 4 && request.status === 200) {
success(JSON.parse(request.responseText));
}
};
request.send();
setInterval(get("button-status.json", receiveStatus), 3000);
}


function receiveStatus(response) {
if (response.status !== status) { // only do something if status has changed
status = response.status;
console.log('button status is now', status);
}
}
let status;
// checks every 100ms
get()

我们用于测试的 python 代码:

import random
import json
import time
button_status = False
path = (r"C:\Users\Sam\Desktop\pythonProject\pythonflask\emplates") # replace with your actual path

def save_button_status():
with open(path + "/button-status.json", "w") as f:
json.dump({'status': button_status}, f)



while True :
value = random.randrange(1, 10)
if ( value <= 5) :
button_status = True
save_button_status()
time.sleep(3)
else :
button_status = False
save_button_status()
time.sleep(3)

print(button_status)

最佳答案

网页中的 Javascript 无法直接在您的计算机上运行 Python 脚本或从本地终端读取信息。你可以做的是让你的 Python 程序输出一个小的 json 文件到你的 localhost 文件夹,当按下或释放按钮时,它会被覆盖,如下所示:

import json
button_status = False # assuming it is initially off
path = "path/to/your/localhost/folder" # replace with your actual path

def save_button_status():
with open(path + "/button-status.json", "w") as f:
json.dump({'status': button_status}, f)

# Then call save_button_status() whenever the status changes

然后在你的 javascript 中,设置一个时间间隔来定期调用一个函数来获取这个 json 文件,如果它发生变化则根据值做一些事情:

function get(url, success) {
//--- Get JSON data at the given URL and call `success` if successful
const request = new XMLHttpRequest();
request.open("GET", url, true);
request.onreadystatechange = function() {
if (request.readyState === 4 && request.status === 200) {
success(JSON.parse(request.responseText));
}
};
request.send();
}

function receiveStatus(response) {
if (response.status !== status) { // only do something if status has changed
status = response.status;
console.log('button status is now', status);
}
}
let status;
let interval = setInterval(() => get("button-status.json", receiveStatus), 100); // checks every 100ms

您的本地服务器更新文件时可能会有一些延迟。

关于javascript - 在 javascript 中使用 python 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65613827/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com