【问题标题】:Invalid file identifier. Use fopen to generate a valid file identifier文件标识符无效。使用 fopen 生成有效的文件标识符
【发布时间】:2017-03-21 11:13:32
【问题描述】:

我正在尝试使用textscan 读取一系列文件,但我不断收到此错误:

使用文本扫描时出错 文件标识符无效。使用 fopen 生成有效的文件标识符。

我的代码是:

fd = fopen(['D:\Thesis\Data\vedai_co_75_25\train\labels\' files(id).name],'rt');
line = textscan(fd, '%s %f %d %f %f %f %f %f %f %f %f %f %f %f %f');

当我尝试查看['D:\Thesis\Data\vedai_co_75_25\train\labels\' files(id).name] 的输出时,它会正确返回路径:

D:\Thesis\Data\vedai_co_75_25\train\labels\00000000.png

同样命令fopen(D:\Thesis\Data\vedai_co_75_25\train\labels\00000000.png)返回34

但是命令fopen(['D:\Thesis\Data\vedai_co_75_25\train\labels\' files(id).name]) 返回-1

我怎样才能做到这一点?

【问题讨论】:

  • 仅供参考,在我的系统上,这两个命令都有效并且不返回 -1 (有或没有字符串连接)。不过我在 Linux 上,而你似乎在 Windows 上。
  • @UJIN 是的,我正在使用 Windows。第二个命令在 for 循环中,所以我不能像第一个那样使用它。
  • 是的,我知道您需要使用第二个版本。不幸的是,我无法重现您正在经历的行为,两者都对我来说工作正常。您将不得不等待有能力并且可能使用 Windows 的人。

标签: matlab fopen


【解决方案1】:

问题可能是您正试图以文本模式打开 .png 文件。
试试fd = fopen( file_name, 'r'),或者在你的例子中:

fd = fopen(['D:\Thesis\Data\vedai_co_75_25\train\labels\' files(id).name],'r');

在 Windows 上,以文本模式打开错误文件可能会导致问题。 fopen 的帮助表示:

(在 Unix 上,文本和 二进制模式是相同的,所以这没有效果。在 PC 系统上 这很关键。)

【讨论】:

  • 是的,一定是这个。当我在fopen 中看到一个图像的“rt”时,我也有点困惑,但后来我在 Ubuntu 上测试它并没有返回任何错误。
  • 是的,感谢您在 Linux 上进行测试。这导致了我的假设。
  • 对于这个错误我真的很抱歉。我应该使用txtfiles 而不是files。问题解决了。非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-30
  • 1970-01-01
相关资源
最近更新 更多