某些敏感文件名导致加载数据失败

时间:2018-01-22 20:29:43

标签: python keras

顺便说一下,在使用keras.model.load_weights时,权重文件以hdf5格式保存,我遇到了一些情况,其中文件夹名称有初始r或{{1导致错误:t

我想知道文件名是否有一些应该避免的指定规则,否则会导致python中出现这样的读取错误,或者我遇到的情况只是特定于keras。

1 个答案:

答案 0 :(得分:3)

如果您包含可能给您带来麻烦的此类文件名示例,那将极大地帮助您调试此操作。但是,我对这里可能发生的事情有个好主意。

此问题似乎出现在名称上以rt开头的文件夹中。此外,由于它们是文件夹,因此在其完整路径名称前面会有\字符(例如"\thisFolder"或类似字符)。在 Windows环境的情况下也是如此,因为它们使用\来分隔与使用常规斜杠/的* nix系统相反的路径。

考虑到这些事情,似乎您可能正在体验这个\r\t都是特殊字符,分别表示回车和制表。如果是这种情况,许多文件打开程序将无法处理此类文件名。

更重要的是,如果您在以n开头的文件夹上遇到相同的错误,或者在连接到反斜杠时给出特殊字符(\n为新行,\s,则我不会感到惊讶{1}}是一个空白区域等)。

为了克服这个问题,您需要在将其作为文件名传递之前转义反斜杠字符。在python中,转义的反斜杠为"\\" 。此外,您还可以选择传递原始字符串,方法是在字符串中添加r前缀,例如r"\a\raw\string"。有关转义和原始字符串的更多信息可以在this问题和答案中找到。

  

我想知道文件名中是否有一些应该避免的规则,否则会导致python中的读取错误,

如上所述,你应该避免使用带有反斜杠特殊含义的字符。我建议您检查here以查看Python接受的字符,这样您就可以避免使用这些字符(或者使用原始字符串并忘记此问题)。