微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么 tf.io.read_file 无法从 pathlib.Path 对象读取?

如何解决为什么 tf.io.read_file 无法从 pathlib.Path 对象读取?

我有一个图片路径:

$(document).ready(function(){
$.ajax({
    url: 'test2.PHP',type: 'POST',dataType: 'JSON',success: function(data){
        var result = JSON.stringify(data); 
        result = JSON.parse(result);
        console.log("RESULT",result);
        $("#time").html(result[0]); //POPULATION LINE
        $("#operator").val(result[1]);
        $("#destination").val(result[2]);
        $("#platform").val(result[3]);
        $("#estimated").val(result[4]);
    }
 });
});

这两个都很好:

file_path = '/dir/sub_dir/my_image.jpg'

我实例化了一个 pathlib.Path 对象

open(file_path,'r')
tensorflow.io.read_file(file_path)

这两个都可以正常工作:

p = pathlib.Path(file_path)

但这不起作用:

open(p,'r')
tensorflow.io.read_file(str(p))

它返回:

tensorflow.io.read_file(p)

为什么 ValueError: Attempt to convert a value (PosixPath('/dir/sub_dir/my_image.jpg')) with an unsupported type (<class 'pathlib.PosixPath'>) to a Tensor. 无法读取 tensorflow.io.read_file 对象

我明白为什么 pathlib.Path 工作正常。我不明白的是 tensorflow.io.read_file(str(p)) 是如何与 path_like_object 一起工作的,但 open 不能

https://docs.python.org/3/glossary.html#term-path-like-object

https://docs.python.org/3/library/functions.html#open

解决方法

那是因为 tensorflow.io.read_file 需要一个 String 对象作为文件路径,而不是 PosixPath 对象,这是你从 pathlib 传递的。

当您使用 str(path) 时,您将 PosixPath 转换为字符串,这就是为什么在这种情况下它可以正常工作。

您可以找到有关文档的更多详细信息。

TensorFlow:https://www.tensorflow.org/api_docs/python/tf/io/read_file

路径库:https://docs.python.org/3/library/pathlib.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。