我正在使用 tensorflow-slim,并修改了一些示例代码以使用我自己的数据。
下面是设置下载数据集的目录的原始代码(dataset_dir由用户输入,这次是'/tmp/flowers'):
flower_root = os.path.join(dataset_dir, 'flower_photos')
directories = []
class_names = []
print('##################current dir is', flower_root) #original line for verification
for filename in os.listdir(flower_root):
path = os.path.join(flower_root, filename)
if os.path.isdir(path):
directories.append(path)
class_names.append(filename)
它打印'#################current dir is /tmp/flowers\flower_photos',这是正确的,它实际上适用于整个代码。
由于它运行良好,我尝试自定义代码如下,它只是将 'flowers' 替换为 'MyData'(因此将 dataset_dir 更改为 '/tmp/MyData'):
MyData_root = os.path.join(dataset_dir, 'MyData_photos')
directories = []
class_names = []
print('##################current dir is', MyData_root)
for filename in os.listdir(MyData_root):
path = os.path.join(MyData_root, filename)
if os.path.isdir(path):
directories.append(path)
class_names.append(filename)
这一次,它打印'##################current dir is /tmp/MyData\MyData_photos',这也是正确的,但它会引发错误:
FileNotFoundError: [WinError 3] 系统找不到指定的路径:'/tmp/MyData\\MyData_photos'
我已经为这个问题工作了几个小时,但我不明白那个 os.listdir(MyData_root) 方法发生了什么。它突然在 'MyData' 和 'MyData_photos' 之间插入额外的 '\' 并导致错误。