Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
文件读取在Brython/Python中不起作用_Python_Brython - Fatal编程技术网

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

文件读取在Brython/Python中不起作用,python,brython,Python,Brython,我的要求:从ID为rtfile1的输入类型=文件中读取内容,然后将其写入ID为-rt1的文本区域 根据[I]上的文档,我尝试读取一个文件,但失败,出现以下错误: 访问位于“”的XMLHttpRequestfile:///C:/fakepath/requirements.txt'源站已被CORS策略阻止:跨源站请求仅支持协议方案:http、数据、chrome、chrome扩展、https 我试着遵循两个Brython代码,它们都失败了,出现了前面提到的相同错误 代码1: def file_read

我的要求:从ID为rtfile1的输入类型=文件中读取内容,然后将其写入ID为-rt1的文本区域

根据[I]上的文档,我尝试读取一个文件,但失败,出现以下错误: 访问位于“”的XMLHttpRequestfile:///C:/fakepath/requirements.txt'源站已被CORS策略阻止:跨源站请求仅支持协议方案:http、数据、chrome、chrome扩展、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标记选择文件,例如

doc['rtfile1'引用的对象在Brython代码中,有一个属性值,但它不是文件路径或url,正如您在错误消息中看到的那样,它是由浏览器生成的伪造路径,不能将其用作Brython函数open的参数,也不能用作向其发送Ajax请求的url;如果要使用文件url,应在基本输入标记中输入它,而不使用type=f伊莱

最好选择type=file的文件,但在这种情况下,对象doc['rtfile1']是一个文件列表对象,如中所述,其第一个元素是文件对象。不幸的是,读取其内容不像open那么简单,但下面是一个工作示例:

从浏览器的“导入”窗口,将文档作为文档 def文件_readev: def onloadevent: 读取文件时触发。FileReader实例为 事件。目标。 作为文本的文件内容是FileReader实例的结果 属性 doc['rt1'].value=event.target.result 将所选文件作为DOM文件对象获取 file=doc['rtfile1'].文件[0] 创建一个新的DOM FileReader实例 reader=window.FileReader.new 以文本形式读取文件内容 reader.readAsTextfile reader.bindload,onload 文档[rtfile1]。bindinput,文件\u已读
这与Brython无关,与等效Javascript的结果相同,但与告诉浏览器要上载哪个文件的方式有关

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

doc['rtfile1'引用的对象在Brython代码中,有一个属性值,但它不是文件路径或url,正如您在错误消息中看到的那样,它是由浏览器生成的伪造路径,不能将其用作Brython函数open的参数,也不能用作向其发送Ajax请求的url;如果要使用文件url,应在基本输入标记中输入它,而不使用type=f伊莱

最好选择type=file的文件,但在这种情况下,对象doc['rtfile1']是一个文件列表对象,如中所述,其第一个元素是文件对象。不幸的是,读取其内容不像open那么简单,但下面是一个工作示例:

从浏览器的“导入”窗口,将文档作为文档 def文件_readev: def onloadevent: 读取文件时触发。FileReader实例为 事件。目标。 作为文本的文件内容是FileReader实例的结果 属性 doc['rt1'].value=event.target.result 将所选文件作为DOM文件对象获取 file=doc['rtfile1'].文件[0] 创建一个新的DOM FileReader实例 reader=window.FileReader.new 以文本形式读取文件内容 reader.readAsTextfile reader.bindload,onload 文档[rtfile1]。bindinput,文件\u已读