GNU/Linux >> Linux の 問題 >  >> Linux

Python でファイルまたはディレクトリの所有者を見つける方法

os.stat() を使用したい :

os.stat(path)
 Perform the equivalent of a stat() system call on the given path. 
 (This function follows symlinks; to stat a symlink use lstat().)

The return value is an object whose attributes correspond to the 
members of the stat structure, namely:

- st_mode - protection bits,
- st_ino - inode number,
- st_dev - device,
- st_nlink - number of hard links,
- st_uid - user id of owner,
- st_gid - group id of owner,
- st_size - size of file, in bytes,
- st_atime - time of most recent access,
- st_mtime - time of most recent content modification,
- st_ctime - platform dependent; time of most recent metadata 
             change on Unix, or the time of creation on Windows)

所有者 UID を取得する使用例:

from os import stat
stat(my_filename).st_uid

ただし、stat 実際のユーザー名ではなく、ユーザー ID 番号 (たとえば、root の場合は 0) を返します。


これは古い質問ですが、Python 3 でより簡単なソリューションを探している人向けです。

Path も使用できます pathlib から Path を呼び出して、この問題を解決します。 の ownergroup このような方法:

from pathlib import Path

path = Path("/path/to/your/file")
owner = path.owner()
group = path.group()
print(f"{path.name} is owned by {owner}:{group}")

したがって、この場合、メソッドは次のようになります:

from typing import Union
from pathlib import Path

def find_owner(path: Union[str, Path]) -> str:
    path = Path(path)
    return f"{path.owner()}:{path.group()}"

私は Python があまり得意ではありませんが、これをうまくまとめることができました:

from os import stat
from pwd import getpwuid

def find_owner(filename):
    return getpwuid(stat(filename).st_uid).pw_name

最近、所有者のユーザー とグループ を取得しようとして、これに出くわしました 情報なので、私が思いついたことを共有したいと思いました:

import os
from pwd import getpwuid
from grp import getgrgid

def get_file_ownership(filename):
    return (
        getpwuid(os.stat(filename).st_uid).pw_name,
        getgrgid(os.stat(filename).st_gid).gr_name
    )

Linux
  1. bashでファイルの絶対ディレクトリを取得するにはどうすればよいですか?

  2. ディレクトリツリーで最も古いファイルを見つけるにはどうすればよいですか

  3. 検索対象のフォルダーを除外するにはどうすればよいですか?

  1. Linuxのディレクトリツリーで最も古いファイルを見つける方法

  2. Imgファイルのタイプを見つけてマウントする方法は?

  3. 部分的なディレクトリ パスを見つける方法は?

  1. C で実行可能ファイルの場所を見つけるにはどうすればよいですか?

  2. パスを見つけるために readlink を実装する方法

  3. Pythonで(MB)ファイルのtar.gzのサイズを取得する方法