PyQt转换路径中的斜杠(斜杠(/)与反斜杠(\)转换)

1.问题背景        

PyQt是写Python图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)的一大利器,但是因为其跨平台的特性,导致可能在Windows系统上使用的GUI使用的路径是由斜杠(/)组成的,而Windows系统默认使用的是反斜杠(\),如下图:

PyQt转换路径中的斜杠(斜杠(/)与反斜杠(\)转换)_第1张图片

这就会导致一些不可预料的错误发生,如我在之前的博客里面所讲:

Python提取Word中的图片

在使用doc2docx进行doc文件转为docx文件时,在获取用户需要处理的路径后调用doc2docx,在高版本pywin32中,已经不支持传入的路径由斜杠组成了,会引发pywintypes.com_error报错(老版本221可以支持斜杠组成的文件路径):

Traceback (most recent call last):
  File "C:\Users\Jayce\Anaconda3\envs\tf1.7\lib\site-packages\IPython\core\interactiveshell.py", line 3343, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "", line 1, in
    runfile('E:/Code/Python/doc2docx.py', wdir='E:/Code/Python')
  File "C:\Program Files\JetBrains\PyCharm 2020.1\plugins\python\helpers\pydev\_pydev_bundle\pydev_umd.py", line 197, in runfile
    pydev_imports.execfile(filename, global_vars, local_vars)  # execute the script
  File "C:\Program Files\JetBrains\PyCharm 2020.1\plugins\python\helpers\pydev\_pydev_imps\_pydev_execfile.py", line 18, in execfile
    exec(compile(contents+"\n", file, 'exec'), glob, loc)
  File "E:/Code/Python/doc2docx.py", line 30, in
    doc2docx(doc_path, docx_path)
  File "E:/Code/Python/doc2docx.py", line 15, in doc2docx
    doc = word.Documents.Open(doc_name)
  File ">", line 8, in Open
pywintypes.com_error: (-2147352567, '发生意外。', (0, 'Microsoft Word', '很抱歉,找不到您的文件。该项目是否已移动、重命名或删除?\r (E:\\//Win10/Datasets/Test%20sample/提取图...)', 'wdmain11.chm', 24654, -2146823114), None)

PyQt转换路径中的斜杠(斜杠(/)与反斜杠(\)转换)_第2张图片

2.解决方案

2.1.斜杠转反斜杠( / 转 \ )

使用QtCore.QDir.toNativeSeparators方法:

from PyQt5 import QtCore
 
# word操作库只支持反斜杠,所以需要将QT拿到的正斜杠(/)转反斜杠(\)
doc_path = r'E:/Win10/Datasets/Test sample/提取图片/tmp.doc'
print('原始路径:{}'.format(doc_path))
path = QtCore.QDir.toNativeSeparators(doc_path)
print('转换后路径:{}'.format(path))

可以看到成功转化:

PyQt转换路径中的斜杠(斜杠(/)与反斜杠(\)转换)_第3张图片

2.2.反斜杠转斜杠( \ 转 / )

使用QtCore.QDir.fromNativeSeparators方法: 

# 反斜杠(\)转正斜杠(/)
doc_path = r'E:\Win10\Datasets\Test sample\提取图片\tmp.doc'
print('原始路径:{}'.format(doc_path))
path = QtCore.QDir.fromNativeSeparators(doc_path)
print('转换后路径:{}'.format(path))

可以看到成功转化:

PyQt转换路径中的斜杠(斜杠(/)与反斜杠(\)转换)_第4张图片

到此这篇关于PyQt转换路径中的斜杠(斜杠(/)与反斜杠(\)转换)的文章就介绍到这了,更多相关PyQt转换路径斜杠内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

你可能感兴趣的:(PyQt转换路径中的斜杠(斜杠(/)与反斜杠(\)转换))