OS関係
os
ファイル
数学・科学
出力
その他
|
Pythonモジュール os OS の雑多なインターフェースPython で,ファイルとディレクトリーの操作を操作するための便利なモジュール os の使い方について説明します. 目次はじめにPython のようなスクリプト言語 (?) では,ディレクトリーやファイルの操作を行うことがしばしば有ります.その場合,モジュール os が便利です.例えば,以下のプログラムでカレントディレクトリーのファイル / ディレクトリー名を出力します. 001 import os 002 003 lists = os.listdir('./') 004 for li in lists: 005 if os.path.isdir(li): 006 print('directory: {0:s}'.format(li)) 007 else: 008 print('file: {0:s}'.format(li)) モジュール os の機能ここでは,モジュール os の重要な — 使用頻度が高いと思われる — 機能(主にメソッド)について,説明します.モジュール os はたくさんのメソッドや変数,クラスから構成され,とてもこの節で説明しきれません.そこで,今まであるいは今後,筆者が使うと思われる機能に絞ります.詳細が必要な場合は,マニュアル「os ― Miscellaneous operating system interfaces」を参照ください.本節の内容の多くは,このマニュアルを適当に日本語訳したものです. プロセスパラメーターここで示す機能(一部はデータ)は,現在のプロセスおよびユーザに関する情報を提供するとともに、それらを操作も行います.
ファイルオブジェクトの生成新規にファイル作成する機能です.しかし,これを使う状況はめったに起きないでしょう.使う場合は,「File Object Creation」を読んでください. ファイル記述子の操作ここで示す機能(メソッド)は,ファイル記述子 (file descriptor) を使って参照される I/O ストリームを操作します.ファイル記述子は,現在のプロセスによって開かれたファイルに対応する小さな整数です.たとえば,標準入力の通常ファイル記述子は「0」,標準出力は「1」,標準エラーは「2」です.プロセスによって開かれたさらに別のファイルには,「3」や「4」,「5」というよな整数が割り当てられます.Unix 系の OS では,ソケットとパイプもファイル記述子によって参照されます.fileno() メソッドを使うと,必要に応じてファイルオブジェクトに関連付けられたファイル記述子を取得することができます. ファイル記述子を直接使用すると,ファイルオブジェクトメソッドをバイパスし,データの内部バッファリングなどの側面は無視します. ファイルとディレクトリーファイルやディレクトリーの操作に関する機能です.
os.DirEntry は scandir() によって生成されるオブジェクトです.os.DirEntryインスタンスの属性およびメソッドは以下の表のとおりです.
os.stat_result は os.stat() や os.fstat(),os.lstat() によって生成されるオブジェクトです.stat 構造体のメンバーに対応する属性は,以下の表のとおりです.
ここにない機能は,高水準ファイル操作「shutil」を使います.例えば,「shutil.rmtree(path)」を使えば,ディレクトリーツリー全体を削除できます. プロセスマネジメントここで示す機能は,プロセスの生成と管理に関するものです. プロセスの生成以下の表に示す全ての関数 (exec*) は,現在のプロセスを置き換え新たに指定されたプログラムを実行します.実行完了後,呼び出し元の Python のプログラムには戻りません.unix系の OS では,新しい実行可能ファイルが現在のプロセスにロードされ,呼び出し元 (Python プログラム) と同じプロセスIDとなります.エラーは OSError の例外として報告されます. [注意] 現在のプロセス (Python) は,呼びだされたプログラムの実行に直ちに置き換えられます.その時に開いているファイルオブジェクトとディスクリプタはフラッシュされません.呼び出したプロセス (Python) のファイルにバッファリングされたデータがある場合は,exec* 関数を呼び出す前に sys.stdout.flush() または os.fsync() を使用してフラッシュするべきです.
表中の引数の列が固定となっている関数 (関数名exec の後に 'p' が付く) は,PATH環境変数を使用して実行ファイルを検索します.パスの指定が不要で,通常のコマンドラインと同じ感覚でプログラムの起動ができます.それ以外は, 実行ファイルへの絶対パスまたは相対パスの指定が必要です. 表中の引数の列が固定となっている関数 (関数名に'l'が付く) は,実行するプロブラムの引数の数が予め決まっている場合に使います.引数リスト(arg0, arg1, …) にプログラムに渡す引数を記述します.一方,可変となている関数 (関数名に'v'が付く) は,実行するプロブラムが可変長の引数をとる場合に使います.引数(args)はタプル,あるいはリストで与えます. [注意] モジュール os が提供するさまざまな exec* 関数は,引数リストを渡してプログラムを実行します.exec* 関数の最初の引数のは,ユーザーがコマンドラインで入力した引数ではなく,プログラムの名前です(なんでもOK). C言語のプログラムを考えると解りやすいです.C言語のプログラムの main(int argc, char *argv[]) に渡される argv[0] です.別の例で,os.execv('/bin/echo', ['foo', 'bar']) では,「bar」のみ標準出力に表示されます.fooは無視されます. 表中の引数の列が可能となっている関数 (関数名exec の後に 'e' が付く) は,環境変数をユーザー定義できます.辞書のようなマップ型のオブジェクでトを引数として渡します. プロセスの管理ここでは,プロセス管理に関する機能のうち使用頻度高いメソッドの概要を説明します.詳細については,マニュアル (英語, 日本語) を参照ください.Unix 系の OS でのみ有効なものがあります.Windows で使う場合は,注意が必要です.
スケジューラーここで示す機能は,オペレーティングシステムによってプロセスに割り当てる CPU 時間を制御します.普通のユーザーがこの機能を使うことはまれでしょう.ここでは説明しないので,気になる場合は「Interface to the scheduler(翻訳)」が参考になります. その他のシステム情報ここでは,これまでのカテゴリーに入らないその他のシステム情報に関するメソッドのうち使用頻度高いものの概要を説明します.詳細については,マニュアル (英語, 日本語) を参照ください.
乱数乱数を発生させることもできます.
モジュール os.path の機能ページ作成情報参考資料
更新履歴
|