gpt4 book ai didi

python - 文件读取在 Brython/Python 中不起作用

转载 作者:行者123 更新时间:2023-12-01 00:11:46 25 4
gpt4 key购买 nike

我的要求:从ID=“rtfile1”的输入类型=“file”读取内容并将其写入ID为“rt1”的文本区域

基于 [ https://brython.info/][1] 的文档我尝试读取文件,但失败并出现以下错误:从源“http://example.com:8000”访问“file:///C:/fakepath/requirements.txt”处的 XMLHttpRequest ' 已被 CORS 策略阻止:仅以下协议(protocol)方案支持跨源请求:http、data、chrome、chrome-extension、https。

我尝试遵循两个 Brython 代码,但都因上述相同错误而失败。

代码1:

def file_read(ev):
doc['rt1'].value = open(doc['rtfile1'].value).read()
doc["rtfile1"].bind("input", file_read)

代码2:

 def file_read(ev):
def on_complete(req):
if req.status==200 or req.status==0:
doc['rt1'].value = req.text
else:
doc['rt1'].value = "error "+req.text

def err_msg():
doc['rt1'].value = "server didn't reply after %s seconds" %timeout

timeout = 4

def go(url):
req = ajax.ajax()
req.bind("complete", on_complete)
req.set_timeout(timeout, err_msg)

req.open('GET', url, True)

req.send()
print('Triggered')
go(doc['rtfile1'].value)

doc["rtfile1"].bind("input", file_read)

任何帮助将不胜感激。谢谢!!! :)

最佳答案

它与 Brython 无关(使用等效的 Javascript 会得到相同的结果),但与告诉浏览器要上传哪个文件的方式有关。

如果您通过 HTML 标记选择文件,例如

<input type="file" id="rtfile1">

Brython 代码中 doc['rtfile1'] 引用的对象具有属性 value,但它不是文件路径或 url,它是浏览器构建的“fakepath”(正如您在错误消息中看到的那样),您不能将其用作 Brython 函数 open() 的参数,也不能用作发送 Ajax 请求的 url;如果您想使用文件 url,则应将其输入到基本输入标记中(不带 type="file")。

最好使用 type="file" 选择文件,但在本例中选择对象 doc['rtfile1']是一个 FileList 对象,如 DOM's Web API 中所述。 ,其第一个元素是 File 对象。不幸的是,读取其内容并不像使用 open() 那么简单,但这里有一个工作示例:

from browser import window, document as doc

def file_read(ev):

def onload(event):
"""Triggered when file is read. The FileReader instance is
event.target.
The file content, as text, is the FileReader instance's "result"
attribute."""
doc['rt1'].value = event.target.result

# Get the selected file as a DOM File object
file = doc['rtfile1'].files[0]
# Create a new DOM FileReader instance
reader = window.FileReader.new()
# Read the file content as text
reader.readAsText(file)
reader.bind("load", onload)

doc["rtfile1"].bind("input", file_read)

关于python - 文件读取在 Brython/Python 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59591474/

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