我正在關注使用 Tensorflow 和 Python 進行實時面罩檢測的視頻。
但是,在視頻中,21:06當開發人員創建“標簽映射檔案”時,我的檔案沒有在我的本地機器上創建,我在 Jupyter 上收到一個錯誤,顯示**FileNotFoundError: [Errno 2] No such file or directory: 'Tensorflow/workspace/annotations\\label_map.pbtxt'**.
從下面的螢屏截圖中可以看出,我復制了視頻中的代碼,我認為我沒有在 Jupyter 上錯誤地復制它。
我的代碼
labels = [{'name':'Mask', 'id':1}, {'name':'NoMask', 'id':2}]
with open(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')
教程代碼 - 21:06 - 創建地圖檔案
jupyter 上的教程代碼。
正如您從下面的下一個螢屏截圖中看到的,我的路徑應該都是正確的 我不明白為什么沒有創建“標簽映射”檔案?
未創建標簽映射檔案
我還嘗試以不同的方式為檔案路徑添加斜杠,例如 this/和 this \。
uj5u.com熱心網友回復:
看起來你有多余的斜線\\。只需洗掉一個斜線。
使用帶驅動器號的絕對路徑,例如r'C:\Users\NaziModerator\Tensorflow\workspace\annotations\label_map.pbtxt'.
不要混合\和/。
不要忘記r''字串之前。
print(path) 為了確定。
uj5u.com熱心網友回復:
TL; DR使用os.path.join加入路徑元素,或pathlib.PurePath清潔的混合路徑變數
解決方案1:使用 os.path.join
在 Python 中構造檔案路徑名時,最安全的做法是os.path.join()在每一步都使用。這將始終為您提供可移植的代碼。
例如:
import os
ANNOTATION_PATH = os.path.join("Tensorflow", "workspace", "annotations")
with open(os.path.join(ANNOTATION_PATH, "label_map.pbtxt", "w") as f:
...
如果您在 Windows 原生 Python 解釋器中運行此代碼,您將看到路徑組件按\應有的方式系統地劃分,如果您在 Linux 或 Cygwin Python 解釋器中運行相同的代碼,您將看到/路徑組件之間.
參考:os.path.join在 Python 手冊中
解決方案2:使用 pathlib.PurePath
pathlibPython 中的庫可用于為您清理混合斜杠/反斜杠路徑。
在 Windows 上測驗:
>>> import pathlib
>>> print(pathlib.PurePath('Tensorflow/workspace/annotations\\label_map.pbtxt'))
Tensorflow\workspace\annotations\label_map.pbtxt
參考:pathlib在 Python 手冊中
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/334430.html
