如何解决Python读取图片路径存在转义字符的问题
作者:夏天是冰红茶
普遍解决路径中存在转义字符的问题的方法
普遍解决转义字符的问题,无非是以下这三种。
1.在路径前添加r
直接在路径前面加r,这种方法能够使字符保持原始的意思。
比如下面这种:
path=r"D:\MindSpore\Dearui\source\ces\0AI.png"
2.将反斜杠“\”替换为正斜杠
path="D:\MindSpore\Dearui\source\ces/0AI.png"
3.将反斜杠“\”替换为双反斜杠“\\”
path="D:\\MindSpore\\Dearui\\source\\ces\\0AI.png"
使用os来读取图片的路径
这里我们采用了os来连接文件夹名与文件名。
具体方法如下:
paths=r"D:\MindSpore\Dearui\source\ces" imgfile = [] file_list = os.listdir(paths) for i in file_list: newph = os.path.join(paths, i) imgfile.append(newph) print(imgfile)
最后我们先直接打印出这个列表。
['D:\\MindSpore\\Dearui\\source\\ces\\0AI.png', 'D:\\MindSpore\\Dearui\\source\\ces\\AI2.png', 'D:\\MindSpore\\Dearui\\source\\ces\\AI3.png']
这里在用os时,可以看见是自动采用的是双反斜杠,有效规避了转义字符,但这里有涉及到了列表读取机制的问题。
for f in imgfile: print(f)
一般我们是通过for循环这种方式来获取列表中的图片路径,然而这里却并非如我所想。
D:\MindSpore\Dearui\source\ces\0AI.png
D:\MindSpore\Dearui\source\ces\AI2.png
D:\MindSpore\Dearui\source\ces\AI3.png
使用for循环读取,竟然将双反斜杠变为了单斜杠,这也就导致了读取路径中存在了转义字符,这里面可能涉及到读取机制的问题,具体是什么这里就不探究了,下面我们来说下解决方案。
本文采取的方法
索性的是通过os,我们获得的路径是双反斜杠,毕竟连'\'这种都属于是转义字符,我们还真没什么办法对它进行变化。
newph = os.path.join(paths, i).replace("\\","/")
这样修改就可以完成对转义字符的修改,并且通过for循环打印出来的值也是符合条件的。
for循环打印:
D:/MindSpore/Dearui/source/ces/0AI.png
D:/MindSpore/Dearui/source/ces/AI2.png
D:/MindSpore/Dearui/source/ces/AI3.png
列表打印:
['D:/MindSpore/Dearui/source/ces/0AI.png', 'D:/MindSpore/Dearui/source/ces/AI2.png', 'D:/MindSpore/Dearui/source/ces/AI3.png']
此函数也被我收录进了pyzjr中,需要下载0.0.19版本之后才可见。
pip install pyzjr==0.0.19 def getPhotopath(paths): """ * log:0.0.19以后修改了一个比较大的bug,使用os读取的路径是“\\”,本来是没有问题的, 但如果使用列表循环读取,居然变成了单斜杠。 * 功能:批量读取文件夹下的图片路径 :param paths: 文件夹路径 :return: 包含图片路径的列表 """ imgfile = [] file_list = os.listdir(paths) for i in file_list: if i[0] in ['n', 't', 'r', 'b', 'f'] or i[0].isdigit(): print(f"Error: 文件名 {i} 开头出现错误!") newph = os.path.join(paths, i).replace("\\","/") imgfile.append(newph) return imgfile
这里我添加了提示,可以指出可能是哪个文件出错了,便于后续问题的查找,能够手动修改的,其实是最后的,但如果你执意要用也是没有任何问题的。
到此这篇关于如何解决Python读取图片路径存在转义字符的问题的文章就介绍到这了,更多相关Python读取图片路径内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!