1. 程式人生 > >pywintypes.com_error: (-2147352567, '發生意外 解決方案 :出現在Python呼叫WPS中

pywintypes.com_error: (-2147352567, '發生意外 解決方案 :出現在Python呼叫WPS中

這幾日做了一個小程式,主要功能是使用win32com庫呼叫WPS,並運用一些簡單的二次開發指令,實現檔案格式的轉換並另存為新檔案。

大致程式碼如下:

import win32com
import win32com.client
w=win32com.client.constants
wps=win32com.client.gencache.('kwps.application')
d=wps.Documents.Open(r'C:\Users\asus\Desktop\project\文件2.docx')
d.SaveAs2(FileName=r'C:\Users\asus\Desktop\project\文件文字.txt',FileFormat=w.wdFormatText
)

程式執行報錯:

pywintypes.com_error: (-2147352567, '發生意外。', (0, 'Kingsoft WPS', '文件儲存失敗。', '', 3011, -2147467259), None)

在網上找了很久,最後在一個部落格裡看到有人使用了

win32com.client.gencache.EnsureDispatch

載入了WPS,便在我的程式中使用了,不過那位博主也提出:“不知道解決的原因是什麼。”我在使用了EnsureDispatch後,問題也湊巧得到了“解決”(繼續看下去),程式碼如下:

import win32com
import win32com.client
w=win32com.client.constants
wps=win32com.client.gencache.EnsureDispatch('kwps.application')
d=wps.Documents.Open(r'C:\Users\asus\Desktop\project\文件2.docx')
d.SaveAs2(FileName=r'C:\Users\asus\Desktop\project\文件文字.txt',FileFormat=w.wdFormatText
)

出於某種好運,檔案被成功儲存了。我以為問題就解決了呢,直到程式已經提交,今天思考並嘗試才發現:問題壓根就沒被解決。

經過我的反覆嘗試,我發現:

問題的出現原因並不是接入的方式或者其他什麼原因,而是一個很簡單的原因:當前程式沒有對目標檔案的支配許可權。也就是說,我們掛載的WPS並沒有許可權去另存為這個被開啟的文件。繼續深究,原因很簡單也很可笑:

之前開啟的WPS尚未被關閉。

這個時候,出現問題是很自然的事情了。在採用EnsureDispatch的同時,我恰巧手動關閉了WPS的程序,再發現執行成功後也沒有再試,而是繼續編寫了後續關閉掛載程式的函式,所以問題也就再沒有出現過……以至於我認為它“解決了”。

附上關閉WPS的程式碼:

def closesoft():
    print('''掛載程式關閉中……

          ''')
    import win32com
    import win32com.client
    wc=win32com.client.constants

    try:
        wps=win32com.client.gencache.EnsureDispatch('kwps.application')
    except:
        wps=win32com.client.gencache.EnsureDispatch('wps.application')
    else:
        wps=win32com.client.gencache.EnsureDispatch('word.application')
    try:
        wps.Documents.Close()
        wps.Documents.Close(wc.wdDoNotSaveChanges)
        wps.Quit
    except:pass

它可以關閉兩種WPS和MS WORD,稍加修改也可以關閉PPT和ET。

雖然最後並不真的影響程式使用,但問題依然存在,記下來,各位以後可以知道原因。

相關推薦

pywintypes.com_error: (-2147352567, '發生意外 解決方案 出現在Python呼叫WPS

這幾日做了一個小程式,主要功能是使用win32com庫呼叫WPS,並運用一些簡單的二次開發指令,實現檔案格式的轉換並另存為新檔案。 大致程式碼如下:import win32com import win32com.client w=win32com.client.consta

解決方案hbase資料遷移發生ERROR: Unknown table錯誤

轉載自:m.blog.csdn.net/blog/jiangheng0535/10387167 以下是文章的原文: 說明:網上眾多千篇一律的版本都說要用到一個add_table.rb的檔案,可是我的版本根本hbase下就不存在這個檔案。 1.把資料表test從hbase

零售行業BI解決方案就連神秘的新零售也亟需

load 分享 power 接受 website 零售行業 pic 開發部署 ref 隨著物質水平的提高,人們的品味也在隨之增高。品質走高,消費升級,零售行業在近些年迅猛發展,更叠換代。從實體店線下零售到線上零售,再到今天新概念新零售,零售業在變得越來越智能。

0512日重點淘寶的H5手機端自適應解決方案Flexible

自動獲取 手機端 issue 解決方案 target 解決 flex get bsp 參考文檔: https://github.com/amfe/lib-flexible https://github.com/amfe/article/issues/17 自我總結:F

C#進階系列——WebApi 跨域問題解決方案CORS

dea ati ice pro target default 異常 測試工具 復雜 前言:上篇總結了下WebApi的接口測試工具的使用,這篇接著來看看WebAPI的另一個常見問題:跨域問題。本篇主要從實例的角度分享下CORS解決跨域問題一些細節。 WebApi系列文章

C#進階系列——WebApi 身份認證解決方案Basic基礎認證

str 常見 bre 這一 dex ace timeout ticket 結合 閱讀目錄 一、為什麽需要身份認證 二、Basic基礎認證的原理解析 1、常見的認證方式 2、Basic基礎認證原理 三、Basic基礎認證的代碼示例 1、登錄過程 2、/Home/I

【ansible】Windows開啟遠程控制錯誤解決方案無法檢查防火墻狀態

contain ret turn nbsp windows wall 解決方案 itl wrapper 這個在老版本的Windows系統才有這種bug。例如Windows 2008 R2和Windows 7,如果你的系統的阿裏雲的Windows server 2

外顯子分析彈錯解決方案Exception in thread "main" picard.PicardException: New reference sequence does not contain a matching contig for NC_007605

clear except -c 解決 als index false quest div 最近從公共數據庫下載了一堆bam文件和reference 基因組文件,重新分析外顯子流程時,跑出了“Exception in thread "main" picard.Pi

外顯子分析彈錯解決方案Invalid command line: Cannot process the provided BAM/CRAM file(s) because they were not indexed.

highlight exe line light logs mtools and cannot not in 出現這種問題說明bam/cram文件沒有進行index. Samtool能解決這個問題,以bam文件為例,輸入以下命令行即可解決問題: /path/to/y

MYSQL問題解決方案Access denied for user 'root'@'localhost' (using password:YES)

program 重啟 user 輸入 update tables 令行 mda 連接 這兩天在MyEclipse中開發Web項目時,連接MYSQL數據庫,出現問題:Access denied for user ‘root‘@‘localhost‘ (using passwo

教程 | Kaggle網站流量預測任務第一名解決方案從模型到代碼詳解時序預測

abs rdf reg lock 集成 deep 月份 current 均值 https://mp.weixin.qq.com/s/JwRXBNmXBaQM2GK6BDRqMw 選自GitHub 作者:Artur Suilin 機器之心編譯 參與:蔣思源、路雪、黃小天

Android Studio更改工程名異常解決方案 can't rename root module

包括 extern ext 相關 文件名 post roo 手動 修改文件 在修改Android Studio 中 project的名字時 ,提示 “can’t rename root module”。 這是因為Android S

C# 無法恢復到按鈕設置好的BackColor?只能恢復到Control BackColor(例如灰色)的解決方案

clas blog post cor span icon div ren 當前 C# 無法恢復到按鈕設置好的BackColor? 只能恢復到Control BackColor(例如灰色)的解決方案: //定義一個顏色 Color currentbtBac

MYSQL高可用解決方案PHXSQL(騰訊微信)編譯實錄

mysql phxsql [root@king01 ~]# rpm -ivh epel-release-6-8.noarch.rpm[root@king01 ~]# yum install -y automake zlib autoconf cmake gcc libtool ncurses ncur

MYSQL讀寫分離解決方案MariaDB MaxScale部署實錄

maxscaleMASTER(KING01)[root@king01 ~]# mysql -uroot -pabcd.1234 Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 173 S

MYSQL讀寫分離解決方案MYCAT部署實錄

mysql mycat 讀寫分離 MASTER (KING01)[root@king01 ~]# mysql -uroot -pabcd.1234 mysql> show master status; +------------------+----------+--------------

Oracle數據庫容災解決方案Oracle DataGuard部署實錄

oracle dataguardSQL> alter database force logging; Database altered. SQL> col force_logging for a15 SQL> select force_logging from v$database; FO

開源監控解決方案ZABBIX部署實錄

lamp zabbix 安裝 Apache HTTP Server [root@king01 ~]# groupadd apache [root@king01 ~]# useradd apache -g apache -s /bin/nologin[root@king01 ~]# tar zxvf a

開源監控解決方案Observium部署實錄

lamp observium snmp [root@king01 ~]# rpm -ivh https://mirror.webtatic.com/yum/el6/latest.rpm [root@king01 ~]# rpm -ivh epel-release-6-8.noarch.rpm [

開源監控解決方案Icinga(Nagios)部署實錄

apache mysql nagios [root@king01 ~]# rpm -ivh http://repo.mysql.com/mysql-community-release-el6-5.noarch.rpm [root@king01 ~]# yum install -y mysql-