PyQt轉換路徑中的斜杠(斜杠(/)與反斜杠(\)轉換)
1.問題背景
PyQt是寫Python圖形用戶界面(Graphical User Interface,簡稱 GUI,又稱圖形用戶接口)的一大利器,但是因為其跨平臺的特性,導致可能在Windows系統上使用的GUI使用的路徑是由斜杠(/)組成的,而Windows系統默認使用的是反斜杠(\),如下圖:
這就會導致一些不可預料的錯誤發生,如我在之前的博客裡面所講:
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 "<ipython-input-2-f52e8eccf39d>", line 1, in <module>
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 <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:\Win10\Datasets\Test sample\提取圖片\tmp.doc' print('原始路徑:{}'.format(doc_path)) path = QtCore.QDir.fromNativeSeparators(doc_path) print('轉換後路徑:{}'.format(path))
可以看到成功轉化:
到此這篇關於PyQt轉換路徑中的斜杠(斜杠(/)與反斜杠(\)轉換)的文章就介紹到這瞭,更多相關PyQt轉換路徑斜杠內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Python3中PyQt5簡單實現文件打開及保存
- python 實現docx與doc文件的互相轉換
- Python實現Word文檔轉換Markdown的示例
- Python+MySQL隨機試卷及答案生成程序的示例代碼
- Python從MySQL數據庫中面抽取試題,生成試卷