Python 属性错误:';str';对象没有属性';队列参考号';

Python 属性错误:';str';对象没有属性';队列参考号';,python,tensorflow,Python,Tensorflow,我正在尝试使用Tensorflow读取CSV文件: import tensorflow as tf reader = tf.TextLineReader() key, value = reader.read("../input/training.csv") 但是,我在代码的最后一行发现了这个问题: /opt/conda/lib/python3.6/site-packages/tensorflow/python/ops/io_ops.py in read(self, queue, name)

我正在尝试使用Tensorflow读取CSV文件:

import tensorflow as tf

reader = tf.TextLineReader()
key, value = reader.read("../input/training.csv")
但是,我在代码的最后一行发现了这个问题:

/opt/conda/lib/python3.6/site-packages/tensorflow/python/ops/io_ops.py in read(self, queue, name)
    191       queue_ref = queue
    192     else:
--> 193       queue_ref = queue.queue_ref
    194     if self._reader_ref.dtype == dtypes.resource:
    195       return gen_io_ops._reader_read_v2(self._reader_ref, queue_ref, name=name)

AttributeError: 'str' object has no attribute 'queue_ref'
知道这是什么原因吗?

您需要为您的文件创建一个队列:

filename_queue = tf.train.string_input_producer(["../input/training.csv"])

reader = tf.TextLineReader()
key, value = reader.read(filename_queue)
从:

[……]

  • 队列
    :表示队列句柄的队列或可变字符串张量,带有字符串工作项
以及API指南的以下部分:

从文件中读取记录的典型管道具有以下阶段:

  • 文件名列表
  • 可选文件名洗牌
  • 可选纪元限制
  • 文件名队列
  • 文件格式的读取器
  • 读取器读取的记录的解码器
  • 可选预处理
  • 示例队列
  • 上面的
    tf.train.string\u input\u producer()
    调用从第4项创建文件名队列,传入一个简单的文件名列表(第1项)。
    tf.TextLineReader()
    是上面列表中的第5项。

    您需要为您的文件创建一个队列:

    filename_queue = tf.train.string_input_producer(["../input/training.csv"])
    
    reader = tf.TextLineReader()
    key, value = reader.read(filename_queue)
    
    从:

    [……]

    • 队列
      :表示队列句柄的队列或可变字符串张量,带有字符串工作项
    以及API指南的以下部分:

    从文件中读取记录的典型管道具有以下阶段:

  • 文件名列表
  • 可选文件名洗牌
  • 可选纪元限制
  • 文件名队列
  • 文件格式的读取器
  • 读取器读取的记录的解码器
  • 可选预处理
  • 示例队列

  • 上面的
    tf.train.string\u input\u producer()
    调用从第4项创建文件名队列,传入一个简单的文件名列表(第1项)。
    tf.TextLineReader()
    是上面列表中的第5项。

    reader.read()
    不带文件名。从文档中可以看到一个队列:队列:一个队列或一个表示队列句柄的可变字符串张量,带有字符串工作项。
    reader.read()
    不包含文件名。从文档中可以看到一个队列:队列:一个队列或表示队列句柄的可变字符串张量,带有字符串工作项。谢谢!另外,您知道如何使用该队列读取多个文件吗?我的意思也是
    test.csv
    labels.csv
    @octavian:队列包含一个文件名列表,只需在该列表中添加更多文件名。此行似乎可以获取队列中所有文件的键和值
    key,value=reader.read(filename\u queue)
    。您知道如何通过读取键和值的文件来分隔键和值吗?@octavian:each
    read()
    调用产生一行;关键点反映了该行的来源。因此,如果您有多个文件,则当值来自不同的文件时,密钥会发生更改。谢谢!另外,您知道如何使用该队列读取多个文件吗?我的意思也是
    test.csv
    labels.csv
    @octavian:队列包含一个文件名列表,只需在该列表中添加更多文件名。此行似乎可以获取队列中所有文件的键和值
    key,value=reader.read(filename\u queue)
    。您知道如何通过读取键和值的文件来分隔键和值吗?@octavian:each
    read()
    调用产生一行;关键点反映了该行的来源。因此,如果有多个文件,则当值来自不同的文件时,键会发生更改。