-
Pythonのpwdモジュールでパスワードデータベースにアクセスする方法
LinuxなどのUNIX系システムでは、ユーザーアカウント情報が「パスワードデータベース」(/etc/passwd)として管理されています。Pythonからこのデータベースにアクセスするには、標準ライブラリのpwdモジュールを使用します。このモジュールを利用すると、ユーザーアカウントやパスワードデータベースのエントリを取得でき、各エントリはタプルのようなオブジェクトとして扱われます。なお、pwdモジュールはUNIX系プラットフォーム専用であり、Windows環境では利用できない点に注意してください。pwdモジュールを使用するには、まず次のようにインポートします。import pwdパスワードデ
-
【Python】spwdモジュールでシャドウパスワードデータベース(/etc/shadow)にアクセスする方法
UNIX系システムのシャドウパスワードデータベース(通常は /etc/shadow ファイル)にアクセスするには、Python標準ライブラリの spwd モジュールを使用します。このファイルには機密性の高い情報が含まれているため、読み取りにはroot権限など十分な特権が必要です。取得できる各エントリは、タプルのようなオブジェクトとして扱えます。 spwdモジュールのインポート spwd モジュールを使用するには、まず次のようにインポートします。 import spwd シャドウパスワードデータベースの属性一覧 各エントリには以下の属性が含まれています。インデックス番号でアクセスすることも、属性
-
Pythonのgrpモジュールを使ってUNIXグループデータベースにアクセスする方法
UNIXのグループデータベースへアクセスするには、Python標準ライブラリのgrpモジュールを使用します。このモジュールが返すエントリーは、タプルのようなオブジェクトとして扱えます。 grpモジュールを使用するには、まず以下のようにインポートします。 import grp grpデータベースの属性 グループデータベースの各エントリーには、次の4つの属性が含まれています。 インデックス属性と説明 0gr_nameグループ名(文字列) 1gr_passwdグループの暗号化されたパスワード(通常は空、または「x」) 2gr_gidグループID(数値・整数型) 3gr_memグループに所属す
-
PythonでUNIXパスワードを検証する関数の実装方法
UNIXのパスワードを検証するには、Python標準ライブラリの crypt モジュールを使用します。このモジュールにはUNIX標準の crypt(3) ルーチンが実装されており、その内部では、DESアルゴリズムを改造した一方向ハッシュ関数が利用されています。 crypt モジュールを使用するには、まず次のようにインポートします。 import crypt crypt.crypt(word, salt) メソッド このメソッドは2つの引数を受け取ります。第1引数の word はユーザーが入力した平文パスワード、第2引数の salt はランダムな文字列です。 saltは、DESアルゴリズムの動作
-
Pythonのtermiosモジュールを使ったPOSIXスタイルのTTY制御入門
Pythonのtermiosモジュールは、POSIX準拠のtty(端末)I/O制御を行うためのインターフェースを提供します。なお、このモジュールはUnix系システムでのみ利用可能であり、Windows環境では使用できない点に注意してください。termiosモジュールを使用するには、まず次のようにインポートします。import termiosこのモジュールに含まれるすべてのメソッドは、対象となるファイルディスクリプタを引数として受け取ります。以下に、主なメソッドを紹介します。termios.tcgetattr(fd)指定されたファイルディスクリプタに対するtty属性のリストを取得します。返される
-
Pythonのttyモジュールでターミナルを制御する方法(rawモード・cbreakモード)
Unix系システムでターミナル(端末)の制御設定を変更したい場合、Python標準ライブラリのttyモジュールを利用できます。このモジュールを使うと、ターミナルを2つの異なるモード、すなわち「rawモード」と「cbreakモード」に切り替えることが可能です。 なお、ttyモジュールはLinuxやmacOSなどのUnix系OS向けの機能であり、Windows環境では使用できない点に注意してください。 ttyモジュールを利用するには、まず以下のようにインポートします。 import tty ttyモジュールには主に次の2つの関数が用意されています。 tty.setraw(fd, when =
-
Pythonのptyモジュールで擬似端末を操作する方法
Pythonの標準ライブラリには、擬似端末(Pseudo-Terminal)を扱うためのptyモジュールが用意されています。このモジュールを利用すると、新たに別のプロセスを起動したり、プログラムから制御端末に対してデータを読み書きしたりすることが可能になります。ただし、ptyモジュールはプラットフォームに強く依存する設計となっているため、これらの操作を実行するにはUNIX系システムが必要です。Windows環境では利用できない点に注意してください。ptyモジュールを使用する際は、まず以下のようにインポートします。import ptyptyモジュールの主なメソッドpty.fork()子プロセスの
-
Pythonでfcntl・ioctlシステムコールを扱う方法|fcntlモジュールの基本とロック制御
fcntlモジュールとは ファイルや入出力(I/O)を制御したい場合は、Pythonのfcntlモジュールを使用します。このモジュールは、Unix系OSが提供するfcntl()やioctl()といったルーチンへのインターフェースとして機能します。 fcntlモジュールに含まれるすべてのメソッドは、第1引数として整数値、またはio.IOBaseオブジェクトのファイルディスクリプタを受け取ります。 このモジュールを使用するには、まず次のようにインポートします。 import fcntl fcntlモジュールには、主に以下のようなメソッドが用意されています。 fcntl.fcntl(fd, o
-
Pythonのpipesモジュールでシェルパイプラインを操作する方法
PythonからUNIXのコマンドパイプライン機構を利用する方法を解説します。コマンドパイプラインとは、複数のコマンドを連結し、あるファイルから別のファイルへとデータを変換しながら処理していく仕組みです。 このモジュールは内部で /bin/sh のコマンドラインを使用するため、os.system() や os.popen() といったメソッドと組み合わせて動作します。 注意: pipes モジュールはPython 3.11で非推奨となり、Python 3.13で削除されました。古いバージョンのPythonで動作させる場合にのみ使用できます。最新の環境では subprocess モジュールの利用
-
PythonのresourceモジュールでUNIXリソース使用量を測定・制御する方法
```html UNIXのリソース使用量を測定するには、Pythonプログラム内でresourceモジュールを使用します。このモジュールは、リソース使用量の測定だけでなく、利用量そのものを制御することもできます。 モジュールを利用するには、まず次のようにインポートします。 import resource リソース制限(Resource Limits) resourceモジュールでは、setrlimit()関数を使ってリソースの利用量に上限を設定できます。リソースの制限には「ソフトリミット(soft limit)」と「ハードリミット(hard limit)」という2つのパラメータが用意されていま
-
PythonからUNIXのsyslogライブラリを操作する方法|syslogモジュールの使い方を解説
UNIXのsyslogライブラリにアクセスしてシステムログを出力するには、Python標準ライブラリのsyslogモジュールを使用します。このモジュールには、システムロガーとやり取りするためのさまざまな関数が用意されており、アプリケーションから簡単にログを記録できます。 このモジュールを使用するには、まず以下のようにインポートします。 import syslog 主なメソッド一覧 syslog.syslog(message) または syslog.syslog(priority, message) 文字列型のメッセージをシステムロガーへ送信します。各メッセージには優先度が割り当てられており、p
-
Pythonのfnmatchモジュールで実現するUNIXスタイルのファイル名パターンマッチング
本記事では、Pythonを使ってUNIXシェル風のパターンマッチングを行う方法を解説します。この用途には、標準ライブラリのfnmatchモジュールが便利です。fnmatchモジュールは、ファイル名とパターンを比較し、一致するかどうかに応じてTrueまたはFalseを返します。使用するには、まず標準ライブラリのfnmatchモジュールをインポートします。import fnmatchUNIXシェルで使えるワイルドカードUNIXのターミナルでは、パターンマッチングに以下のようなワイルドカードを使用できます。*(アスタリスク):すべての文字列に一致します。?(クエスチョンマーク):任意の1文字に一致し
-
Pythonで作る誕生日リマインダーアプリケーションの完全ガイド
この記事では、Pythonを使って誕生日リマインダーアプリケーションを作成する方法を解説します。当日の誕生日を自動的にチェックし、デスクトップ通知で教えてくれる便利なツールを、初心者でも理解できるようにステップごとに説明していきます。 課題の定義 まず、このアプリケーションに求められる要件を整理しましょう。 Pythonで、当日が登録済みの人物の誕生日かどうかを判定できること 誕生日の人物がいれば、その人の名前とともにシステムへ通知を送信すること このアプリケーションでは、日付・月・氏名を保存した「ルックアップファイル(照合用データファイル)」が必要です。ファイルのイメージは以下の通りです
-
PythonとGoogle Speech APIで実現する音声認識の実装方法を徹底解説
音声認識は、スマートホームの自動化やAIアシスタントなど、さまざまなアプリケーションにおいて最も有用な機能の一つです。本記事では、PythonとGoogle Speech APIを組み合わせて音声認識を実装する方法を、サンプルコード付きでわかりやすく解説します。 ここでは、マイクから入力された音声をリアルタイムに認識するケースを扱います。マイクを正しく動作させるためには、いくつかのパラメータを適切に設定する必要があります。 必要なモジュールのインストール 音声認識を行うには、まず「SpeechRecognition」モジュールをインストールします。あわせて「pyaudio」もインストールしてお
-
Pythonでラウンドトリップタイム(RTT)を計測する方法
本記事では、Pythonを使ってラウンドトリップタイム(RTT:Round Trip Time)を計測する方法を解説します。RTTとは、ある信号が送信側から出発し、相手側から確認応答(ACK)が返ってくるまでの一連の往復通信にかかる時間のことです。つまり、「信号の送信開始時刻」と「応答信号を受信した時刻」の差分を指します。 RTTに影響を与える主な要因 RTTの値は一定ではなく、以下のようなさまざまなパラメータによって変動します。 送信側のデータ転送速度 伝送媒体の種類・特性(光ファイバー、銅線、無線など) 送信者と受信者の間の実際の物理的距離 送信者と受信者の間に存在するノード(ルーターな
-
【Python×OpenCV】画像の収縮(エロージョン)と膨張(ダイレーション)の基本を解説
本記事では、PythonのOpenCVモジュールを使って、エロージョン(収縮)やダイレーション(膨張)といったモルフォロジー演算(形態学的処理)を実行する方法を解説します。 OpenCVはコンピュータビジョン向けに設計されたオープンソースのライブラリで、もともとはIntelによって開発されました。BSDライセンスのもとで誰でも無料で利用できます。 OpenCVの機能を使うには、まずpipでインストールしておきましょう。 sudo pip3 install opencv-python エロージョン(収縮)とは?仕組みを解説 エロージョンは、前景オブジェクトの境界を削り取っていく処理です。画像内の
-
PythonのChainMap(チェーンマップ)とは?基本の使い方をサンプルコード付きで解説
ChainMap(チェーンマップ)は、複数の辞書(dict)を1つの単位としてまとめて扱えるようにするクラスです。同じキーが複数の辞書に存在する場合は、先頭の辞書の値が優先されるため、デフォルト設定と上書き設定を組み合わせた管理などにも活用できます。 ChainMapはPython標準ライブラリのcollectionsモジュールに含まれています。利用する際は、まずcollectionsモジュールをインポートしましょう。 import collections ここからは、ChainMapクラスでよく使われる機能を順番に見ていきます。 maps属性・keys()・values()メソッドの使い方
-
Pythonのnamedtuple(ネームドタプル)とは?使い方をサンプルコード付きで解説
Pythonのnamedtuple(ネームドタプル)とは namedtupleは、Pythonの標準ライブラリ「collections」モジュールに含まれるクラスの一つです。辞書型オブジェクトと同様にキーと値を持ちますが、タプルの特性も併せ持っているため、インデックスとキーの両方で要素にアクセスできるのが大きな特徴です。 namedtupleを使用するには、まずcollectionsモジュールをインポートする必要があります。 import collections 以下では、namedtupleクラスの主な機能と使い方を詳しく見ていきましょう。 namedtupleの要素へのアクセス方法 n
-
Pythonのdeque(デック)徹底解説!追加・削除・回転など主要メソッドの使い方
deque(デック)とは dequeは、スタックとキューを一般化したデータ構造で、両端から要素を出し入れできる「双方向キュー」です。Pythonでは標準ライブラリのcollectionsモジュールに含まれており、リストをもとに生成できます。最大の特徴は、要素の追加(append)と削除(pop)がどちらもO(1)の計算量で高速に実行できる点です。 dequeを使うには、まずcollectionsモジュールをインポートします。 import collections 以下では、dequeクラスの主なメソッドを機能別に解説していきます。 要素の追加:append()とappendleft() de
-
PythonのOrderedDictとは?通常のdictとの違いと使い方を徹底解説
OrderedDictとは OrderedDictは、Pythonの標準ライブラリcollectionsモジュールに用意されている、dict(辞書)オブジェクトのサブクラスです。通常のdictとの最大の違いは、キーを挿入した順序を常に保持するという点にあります。従来のdictでは、要素の並び順が挿入順になるとは限りませんでした。 なお、Python 3.7以降では、通常のdictも挿入順序を保持することが言語仕様として保証されるようになりました。ただし、OrderedDictにはmove_to_end()など順序を操作するための専用メソッドが用意されており、順序を明示的に制御したい場面では今な