96765


pythonでdocuworksファイルを開くプログラムを書いたのですがエラーが出てしまいます。  
エラーの内容は開きたいファイルに既にアクセスがあり、競合している？ようなので確認したのですが  
ファイル自体は別に開いていないし、何もアクセスしていません。  
いろいろ調べたのですがどうしても解決できず、アドバイスをお願いしたいです。

以下はエラーの内容

[code]

    Traceback (most recent call last):
    File "C:\Users\moco_\OneDrive\デスクトップ\pythonProject\pycharm\test\main.py", line 9, in <module>
    doc.open()
    File "C:\Users\moco_\OneDrive\デスクトップ\pythonProject\pycharm\test\venv\Lib\site-packages\xdwlib\xdwfile.py", line 538, in open
    self.handle = XDW_OpenDocumentHandleExW(self.pathname(), open_mode)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "C:\Users\moco_\OneDrive\デスクトップ\pythonProject\pycharm\test\venv\Lib\site-packages\xdwlib\xdwapi.py", line 2422, in func
    return api(*args)
    ^^^^^^^^^^
    File "C:\Users\moco_\OneDrive\デスクトップ\pythonProject\pycharm\test\venv\Lib\site-packages\xdwlib\xdwapi.py", line 2477, in XDW_OpenDocumentHandleExW
    TRY(DLL.XDW_OpenDocumentHandleExW, path, byref(doc_handle), byref(open_mode))
    File "C:\Users\moco_\OneDrive\デスクトップ\pythonProject\pycharm\test\venv\Lib\site-packages\xdwlib\xdwapi.py", line 2282, in apifunc
    raise XDWErrorFactory(result)
    xdwlib.xdwapi.SharingViolationError: XDW_E_SHARING_VIOLATION (80070020)
    
[/code]

以下ソースコード

[code]

    import xdwlib
    from xdwlib import xdwopen
    from xdwlib.document import Document
    import time
    
    file_pass = r"C:\Users\moco_\OneDrive\デスクトップ\temp_folder\testfile.xdw"
    doc = xdwopen(file_pass)
    doc.open()
    time.sleep(5)
    doc.save()
    doc.close()
    
[/code]


CC BY-SA 4.0
2023-11-11T09:20:06.703
96754
2023-11-12T12:25:36.523
2023-11-11T10:21:39.253
2238
41441
question
python
プログラムからducuworksファイルを開けない。


`xdwopen()`はユーティリティ関数であり、指定されたパスの拡張子に応じて適切なクラスのオブジェクトを返すそうです。この関数は内部でファイルをオープンするはずです。

  * [xdwlib/docs/howto.rst at master · hayasix/xdwlib | GitHub](https://github.com/hayasix/xdwlib/blob/master/docs/howto.rst)

`xdwopen()`で返ってきたオブジェクトに対して、さらに`doc.open()`を実行してしまっていることによって、すでに開いているファイルを再度開こうとして例外がスローされているのでは？

**どのライブラリやAPIにも通用することですが、まず公式のリファレンスとサンプルコードをよく読むことを推奨します。**

余談ですが、ファイルクローズを自動化するためにも、`with`文を使ったほうがよいと思います。

  * [hayasix/xdwlib: A DocuWorks library. | GitHub](https://github.com/hayasix/xdwlib)


CC BY-SA 4.0
2023-11-12T12:25:36.523
96765
2023-11-12T12:25:36.523
15413
96754
answer