目錄
1.問題背景
PyQt是寫Python圖形用戶界面(Graphical User Interface,簡稱 GUI,又稱圖形用戶接口)得一大利器,但是因為其跨平臺得特性,導致可能在Windows系統上使用得GUI使用得路徑是由斜杠(/)組成得,而Windows系統默認使用得是反斜杠(),如下圖:
這就會導致一些不可預料得錯誤發生,如我在之前得博客里面所講:
在使用doc2docx進行doc文件轉為docx文件時,在獲取用戶需要處理得路徑后調用doc2docx,在高版本pywin32中,已經不支持傳入得路徑由斜杠組成了,會引發pywintypes.com_error報錯(老版本221可以支持斜杠組成得文件路徑):
Traceback (most recent call last):
File "C:UsersJayceAnaconda3envstf1.7libsite-packagesIPythoncoreinteractiveshell.py", line 3343, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-2-f52e8eccf39d>", line 1, in <module>
runfile('E:/Code/Python/doc2docx.py', wdir='E:/Code/Python')
File "C:Program FilesJetBrainsPyCharm 2020.1pluginspythonhelperspydev_pydev_bundlepydev_umd.py", line 197, in runfile
pydev_imports.execfile(filename, global_vars, local_vars) # execute the script
File "C:Program FilesJetBrainsPyCharm 2020.1pluginspythonhelperspydev_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 <module>
doc2docx(doc_path, docx_path)
File "E:/Code/Python/doc2docx.py", line 15, in doc2docx
doc = word.Documents.Open(doc_name)
File "<COMObject <unknown>>", line 8, in Open
pywintypes.com_error: (-2147352567, '發生意外。', (0, 'Microsoft Word', '很抱歉,找不到您得文件。該項目是否已移動、重命名或刪除?r (E:\//Win10/Datasets/Test%20sample/提取圖...)', 'wdmain11.chm', 24654, -2146823114), None)
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))
可以看到成功轉化:
2.2.反斜杠轉斜杠( 轉 / )
使用QtCore.QDir.fromNativeSeparators方法:
# 反斜杠()轉正斜杠(/)doc_path = r'E:Win10DatasetsTest sample提取圖片tmp.doc'print('原始路徑:{}'.format(doc_path))path = QtCore.QDir.fromNativeSeparators(doc_path)print('轉換后路徑:{}'.format(path))
可以看到成功轉化:
到此這篇關于PyQt轉換路徑中得斜杠(斜杠(/)與反斜杠()轉換)得內容就介紹到這了,更多相關PyQt轉換路徑斜杠內容請搜索之家以前得內容或繼續瀏覽下面得相關內容希望大家以后多多支持之家!