Jupyter运行TensorFlow创建label_map.pbtxt提示无此文件报错如何解决?
原因分析
- 核心原因是Python的
open()函数在w写入模式下,仅支持自动创建目标文件,不会自动创建不存在的多级父目录。如果ANNOTATION_PATH对应的Tensorflow/workspace/annotations目录本身不存在,就会抛出找不到文件的错误,和斜杠/反斜杠的适配无关。 - 次要可能原因:
ANNOTATION_PATH变量定义存在拼写错误,或者你使用的是相对路径,而Jupyter当前的工作目录和你预期的项目根目录不匹配,导致路径定位失效。
解决步骤
- 先在写入文件前,手动创建父目录,避免目录不存在的问题,修改代码如下:
import os labels = [{'name':'Mask', 'id':1}, {'name':'NoMask', 'id':2}] # 先创建注解目录,exist_ok=True表示目录已存在时不会报错 os.makedirs(ANNOTATION_PATH, exist_ok=True) # 路径拼接改用os.path.join,自动适配不同系统的斜杠规则 with open(os.path.join(ANNOTATION_PATH, 'label_map.pbtxt'), 'w') as f: for label in labels: f.write('item { \n') f.write('\tname:\'{}\'\n'.format(label['name'])) f.write('\tid:{}\n'.format(label['id'])) f.write('}\n')
- 验证Jupyter工作目录是否匹配预期,执行以下代码打印当前工作目录,确认是否是你项目的根目录:
import os print(os.getcwd())
如果工作目录不对,要么把相对路径改成绝对路径,要么用os.chdir("你的项目根目录路径")切换工作目录后再运行写入文件的代码。
内容的提问来源于stack exchange,提问作者user17213914
相关产品推荐
相关产品推荐

