1

特定のファイルを開いているプロセス、ユーザー、またはPCを見つける必要があります。winサーバーに付属しているユーティリティを使用して手動で実行できますが、何百ものファイルを処理しているため、これをスクリプト化したいと思います。

何かアイデア、提案をお願いしますか?

基本的に以下の情報のリスト: ここに画像の説明を入力してください

4

1 に答える 1

2

この情報を取得するには、文書化されていない Win32 API が必要です。handle.exe それらを使用する sysinternalsなどから呼び出すこともできますがpsutil、PyPi から入手できるモジュールを使用することをお勧めします。これは、使用中のすべてのファイルを一覧表示するサンプル コード (Py3) です。変更できるはずです。

import psutil

for proc in psutil.process_iter():
    try:
        flist = proc.get_open_files()
        if flist:
            print(proc.pid,proc.name)
            for nt in flist:
                print("\t",nt.path)

    except psutil.NoSuchProcess as err:
        print("****",err) 

この種のクエリでは、競合状態が発生する可能性が常にあることに注意してください。プロセスがファイルを開いたり閉じたりする時点、または開始して終了する時点さえわかりません。

PS: Python 3 を使用している場合、psutil のインストールに問題がありましたが、setup.py で 2to3 変換ユーティリティを使用すると問題が解決しました。

于 2012-07-06T10:06:09.330 に答える