1.关于Windows下使用os会出现\ \与 / 的问题
如标题所示,当出现这种问题的时候经常会出现以下错误(此处仅针对Windows平台,Linux平台不会出现这种问题),当然如果你运气号也有可能不会出现这种问题。
FileNotFoundError: [Errno 2] No such file or directory:
至于为什么会报这种错,通过可视输出结果便一目了然
import os
from PIL import Image
import xml.etree.ElementTree as ET
import shutil
voc_data_dir = "../测试/"
os.path.join(voc_data_dir, 'Annotations', 'id_' + '.xml')
# 输出
'../测试/Annotations\\id_.xml'
对于如何解决这种问题我个人探索出两种方案,一种是不用OS组合路径,另外一种还是用os组合路径但是换一种组合方式
import os
from PIL import Image
import xml.etree.ElementTree as ET
import shutil
voc_data_dir = "../测试/"
os.path.join(voc_data_dir, 'Annotations/', 'id_' + '.xml')
# 输出
'../测试/Annotations/id_.xml'
这样的话在路径上正常来说就不会出错了。不过同样还会存在其他奇奇怪怪的问题。
2.关于Windows下使用os组合路径PIL读取jpg报错的问题
这个问题也是属于一个非常奇葩的问题,在我利用上述方法解决\ \与 / 的问题后,路径也确保了正确之后利用Image.open 进行读取jpg图片其仍然会报错(不管是绝对路径还是相对路径都无法解决这个问题)
FileNotFoundError: [Errno 2] No such file or directory:
最后解决方案为从编译器的项目里面复制路径,包括后面的 .jpg 后缀粘贴进入os路径中然后就读取成功了。一个非常不可思议的解决方法。
题外之话
linux和Windows之间python代码的使用在大体上没有区别,然而却偏偏是这些小问题能搞得人心态爆炸。