網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
1.問(wèn)題背景? ? ? ??
PyQt是寫(xiě)Python圖形用戶(hù)界面(Graphical User Interface,簡(jiǎn)稱(chēng) GUI,又稱(chēng)圖形用戶(hù)接口)的一大利器,但是因?yàn)槠淇缙脚_(tái)的特性,導(dǎo)致可能在Windows系統(tǒng)上使用的GUI使用的路徑是由斜杠(/)組成的,而Windows系統(tǒng)默認(rèn)使用的是反斜杠(\),如下圖:
這就會(huì)導(dǎo)致一些不可預(yù)料的錯(cuò)誤發(fā)生,如我在之前的博客里面所講:
Python提取Word中的圖片
在使用doc2docx進(jìn)行doc文件轉(zhuǎn)為docx文件時(shí),在獲取用戶(hù)需要處理的路徑后調(diào)用doc2docx,在高版本pywin32中,已經(jīng)不支持傳入的路徑由斜杠組成了,會(huì)引發(fā)pywintypes.com_error報(bào)錯(cuò)(老版本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, '發(fā)生意外。', (0, 'Microsoft Word', '很抱歉,找不到您的文件。該項(xiàng)目是否已移動(dòng)、重命名或刪除?\r (E:\\//Win10/Datasets/Test%20sample/提取圖...)', 'wdmain11.chm', 24654, -2146823114), None)
2.解決方案
2.1.斜杠轉(zhuǎn)反斜杠( / 轉(zhuǎn) \ )
使用QtCore.QDir.toNativeSeparators方法:
from PyQt5 import QtCore
# word操作庫(kù)只支持反斜杠,所以需要將QT拿到的正斜杠(/)轉(zhuǎn)反斜杠(\)
doc_path = r'E:/Win10/Datasets/Test sample/提取圖片/tmp.doc'
print('原始路徑:{}'.format(doc_path))
path = QtCore.QDir.toNativeSeparators(doc_path)
print('轉(zhuǎn)換后路徑:{}'.format(path))
可以看到成功轉(zhuǎn)化:
2.2.反斜杠轉(zhuǎn)斜杠( \ 轉(zhuǎn) / )
使用QtCore.QDir.fromNativeSeparators方法:?
# 反斜杠(\)轉(zhuǎn)正斜杠(/)
doc_path = r'E:\Win10\Datasets\Test sample\提取圖片\tmp.doc'
print('原始路徑:{}'.format(doc_path))
path = QtCore.QDir.fromNativeSeparators(doc_path)
print('轉(zhuǎn)換后路徑:{}'.format(path))
可以看到成功轉(zhuǎn)化:
原文鏈接:https://geo-ai.blog.csdn.net/article/details/124156128
相關(guān)推薦
- 2022-10-20 Android?PowerManagerService?打開(kāi)省電模式_Android
- 2022-07-18 Linux文件權(quán)限
- 2022-05-18 React?Hook之使用State?Hook的方法_React
- 2022-08-20 Linux中sftp常用命令整理_linux shell
- 2022-11-15 C語(yǔ)言自研定時(shí)器計(jì)劃任務(wù)語(yǔ)法詳解_C 語(yǔ)言
- 2023-07-08 前端使用FileReader讀中文會(huì)亂碼
- 2022-06-01 C語(yǔ)言?柔性數(shù)組的使用詳解_C 語(yǔ)言
- 2023-10-11 小程序|頁(yè)面?zhèn)鲄⒌娜N方式
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門(mén)
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支