9

Linuxには多くの優れた機能がprocfsありsysfs、そのようなツールvmstatはそれをかなり拡張しますが、これらのさまざまなシステムからデータを収集する必要があり、ハッキングするのではなく、統合されたPythonユーティリティを活用したいと考えていました。異種のスクリプトの束。

そのためには、まず、Pythonにさまざまなデータ収集ポイントを適切に解析/処理するために必要な要素があるかどうかを特定する必要があります。だから、私の質問の本質:

sysfsすでにオブジェクトを処理/解析するPythonモジュールはありますか?

私はGoogle、usenet、およびさまざまなフォーラムを介してそのような獣を探しましたが、インテリジェントまたは機能的なものはまだ見つかりませんでした。それで、私がそれを彫る前に、私は最初にここをチェックするだろうと思いました。

4

3 に答える 3

4

これを試してください:

from os import listdir
from os.path import isdir, isfile, islink, join, realpath, normpath
from keyword import iskeyword

_norm = lambda name: name + ('_' if iskeyword(name) else '')

def _denorm(name):
    if name.endswith('_') and iskeyword(name[:-1]):
        return name[:-1]
    else:
        return name

def _norm_path(path):
    return normpath(realpath(path))

class SysFsObject(object):
    __slots__ = ['_path', '__dict__']

    @staticmethod
    def __id_args__(path='/sys'):
        return _norm_path(path)

    def __init__(self, path='/sys'):
        self._path = _norm_path(path)
        if not self._path.startswith('/sys'):
            raise RuntimeError("Using this on non-sysfs files is dangerous!")
        self.__dict__.update(dict.fromkeys(_norm(i) for i in listdir(self._path)))

    def __repr__(self):
        return "<SysFsObject %s>" % self._path

    def __setattr__(self, name, val):
        if name.startswith('_'):
            return object.__setattr__(self, name, val)

        name = _denorm(name)

        p = realpath(join(self._path, name))
        if isfile(p):
            file(p, 'w').write(str(val))
        else:
            raise RuntimeError

    def __getattribute__(self, name):
        if name.startswith('_'):
            return object.__getattribute__(self, name)

        name = _denorm(name)

        p = realpath(join(self._path, name))
        if isfile(p):
            data = open(p, 'r').read()[:-1]
            try:
                return int(data)
            except ValueError:
                return data
        elif isdir(p):
            return SysFsObject(p)

決して洗練されていませんが、IIRCは機能します:)

于 2011-03-10T19:12:55.397 に答える
1

なぜ特定のものが必要なのかよくわかりません。ほとんどの場合、これらはすべてテキストファイルであり、直接混乱させることができます。
私の知る限り、それを行うPythonモジュールはありません。

于 2011-01-10T17:31:18.173 に答える