2020/7/16 更新:
增加解决方法 3:在路径字符串前加 r'filepath'
例子代码:
path = r"D:\PixivWallpaper\catavento.png"
print('path:'+path)
输出结果
D:\PixivWallpaper\catavento.png
加 r 的作用是把转义字符 \ 变成普通字符。
1.前言
在学习PyQt5时,要进行图片文件读取,然后我就想先找一个文件来测试,直接在Windows文件管理器复制了个文件路径,但读取失败了。后面才发现复制的地址和用 QFileDialog 控件读取的路径书写格式不一样,在把复制的路径改成QFileDialog读取的格式后成功读取了图片文件。
进而才想起在python中 \ 是转义字符,所以在读取文件才出错。
"D:\PixivWallpaper\catavento.png" (windows格式)
"D:/PixivWallpaper/catavento.png" (Linux格式,也就是QFileDialog 控件的格式 )
2.解决代码与分析
path = "D:\PixivWallpaper\catavento.png"
print('path:'+path)
#方法1:'\'-->'/'
path_1 = '/'.join(path.split('\\'))
print('path_1:'+path_1)
#方法2:'\'-->'\\'
path_2 = '\\\\'.join(path.split('\\'))
print('path_2:'+path_2)
运行结果
path:D:\PixivWallpaper\catavento.png
path_1:D:/PixivWallpaper/catavento.png
path_2:D:\\PixivWallpaper\\catavento.png
有结果可以看出成功转换了Windows路径。
其中 split() 是字符串分割函数,例如他会把代码中的"D:\PixivWallpaper\catavento.png" 以‘\’为分割符f分成
("D:" ,"PixivWallpaper" ,"catavento.png") 三个字符串的列表
而 xx.join() 是字符串合并函数,xx是在合并字符串之间想加上的字符,例如 ','.join(("D:" ,"PixivWallpaper" ,"catavento.png"))
合并成:"D:,PixivWallpaper,catavento.png"