プログラムからducuworksファイルを開けない。


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]




`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)




`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)

