2

私はpython win32comベースのStgCreateStorageExを使用して、testStorage.pyのコードを適応させて、独自のfile_id属性を任意のファイルに書き込みます。

代替ストリーム(必ずしもこの API 呼び出しからではありませんが) によると、ディレクトリ/フォルダーに保存できるはずですが、フラグを変更するとさまざまなエラーが発生します。

from win32com import storagecon
import pythoncom, os, win32api

fname = r"c:\temp\test\test.txt" #works
fname = r"c:\temp\test\test2"

def testit():
    m=storagecon.STGM_READWRITE | storagecon.STGM_SHARE_EXCLUSIVE
    pss=pythoncom.StgOpenStorageEx(fname, m, storagecon.STGFMT_FILE, 0, pythoncom.IID_IPropertySetStorage)

結果:

pywintypes.com_error: (-2147024895、「関数が正しくありません。」、なし、なし)

編集: これを WinXP、Win7、および Windows Server 2003/R2 の両方で動作させる方法について何か提案はありますか?

最終結果は必ずしもこの API を使用する必要がないことに注意してください。Python から効率的に実行できる必要があるだけです。効率的とは、多くの異なるテクノロジー層を経由しないことを意味します。

4

2 に答える 2

0

結果を見ると、StgOpenStorageExは、単にopen(fname + ":stream_name")に書き込むよりも多くのことをファイルに追加するので、それを選択しました。標準のサマリーフィールドに書き込めないことを除けば、StgOpenStorageExと比較してこれにマイナス面はありますか?

于 2012-08-18T10:08:40.947 に答える
0

モードに storagecon.STGM_DIRECT を追加すると成功します。

于 2012-08-18T00:15:12.303 に答える