顺便说一下,在使用keras.model.load_weights
时,权重文件以hdf5
格式保存,我遇到了一些情况,其中文件夹名称有初始r
或{{1导致错误:t
。
我想知道文件名是否有一些应该避免的指定规则,否则会导致python中出现这样的读取错误,或者我遇到的情况只是特定于keras。
答案 0 :(得分:3)
如果您包含可能给您带来麻烦的此类文件名示例,那将极大地帮助您调试此操作。但是,我对这里可能发生的事情有个好主意。
此问题似乎出现在名称上以r
或t
开头的文件夹中。此外,由于它们是文件夹,因此在其完整路径名称前面会有\
字符(例如"\thisFolder"
或类似字符)。在 Windows环境的情况下也是如此,因为它们使用\
来分隔与使用常规斜杠/
的* nix系统相反的路径。
考虑到这些事情,似乎您可能正在体验这个,\r
和\t
都是特殊字符,分别表示回车和制表。如果是这种情况,许多文件打开程序将无法处理此类文件名。
更重要的是,如果您在以n
开头的文件夹上遇到相同的错误,或者在连接到反斜杠时给出特殊字符(\n
为新行,\s
,则我不会感到惊讶{1}}是一个空白区域等)。
为了克服这个问题,您需要在将其作为文件名传递之前转义反斜杠字符。在python中,转义的反斜杠为"\\"
。此外,您还可以选择传递原始字符串,方法是在字符串中添加r
前缀,例如r"\a\raw\string"
。有关转义和原始字符串的更多信息可以在this问题和答案中找到。
我想知道文件名中是否有一些应该避免的规则,否则会导致python中的读取错误,
如上所述,你应该避免使用带有反斜杠特殊含义的字符。我建议您检查here以查看Python接受的字符,这样您就可以避免使用这些字符(或者使用原始字符串并忘记此问题)。