【问题标题】:Can't access .csv data using MLDataTable无法使用 MLDataTable 访问 .csv 数据
【发布时间】:2019-05-05 04:38:55
【问题描述】:

我正在尝试使用框架 CreateML 读取 .csv 文件的内容以读取 csv 数据。

即使文件存在,以下代码也会产生错误:

let csvURL = URL(fileURLWithPath: "/Volumes/MAC HDD/Data/Data.csv")
let fm = FileManager()
if (fm.fileExists(atPath: csvURL.path)) {
    let dataTable = try! MLDataTable(contentsOf: csvURL)
    // accessing first column
    let col_1 = Array.init(dataTable["col1"])
}

我收到以下错误消息:

线程 1:致命错误:“尝试!”表达式意外引发错误:CreateML.MLCreateError.generic(原因:“没有与指定路径对应的文件(file:///Volumes/MAC%20HDD/Data/Data.csv)”)

我几乎检查了所有内容,但没有得到任何结果。我做错了什么?

【问题讨论】:

  • 如果路径中没有空格会怎样?如果在空格前加上反斜杠会发生什么? "/Volumes/MAC\ HDD/Data/Data.csv"
  • 这给出了invalid escape sequence in literal的错误。
  • 对了,你需要转义反斜杠:"/Volumes/MAC\\ HDD/Data/Data.csv"
  • 这也给了我一个错误(文件不存在)。我认为空格根本不是问题,因为fileURLWithPath 给了我一个有效的文件url,用于检查文件是否存在。我已尝试在路径中没有任何空间的另一个卷,但仍然收到相同的错误消息。

标签: swift createml


【解决方案1】:

我自己发现了问题所在。

我已在 Xcode 项目中实现此代码以读取 csv 数据,但 CreateML 框架仅适用于 Xcode Playground,而不适用于 Xcode 项目!它在 WWDC 2018 会议视频 703 结尾处提到。

上面的代码示例在 Xcode Playground 上运行良好。

如果在导入框架时出现警告,那会为我节省很多时间。

【讨论】:

  • 我无法让“MLDataTable”读取 json 文件,而不是在操场之外(2019 年 3 月)。它总是表现得好像文件不存在,或者是空的(如果文件名错误,您会得到相同的结果)。像你一样,我希望有一个警告——我今天大部分时间都在确信我是愚蠢的。在 Playgrounds 中运行良好,在桌面“应用程序”中运行良好。
猜你喜欢
  • 2019-04-27
  • 2017-06-17
  • 2021-12-07
  • 1970-01-01
  • 1970-01-01
  • 2020-10-03
  • 2021-05-19
  • 2020-08-17
  • 2018-07-22
相关资源
最近更新 更多