home changes contents help options

142:リンクを作成する

リンクの作り方

シンボリックリンクを作成するには os モジュールの symlink(src, dst) 関数を使います。 src を指しているシンボリックリンク dst を作成します。

ハードリンクを作成するには link(src, dst) 関数を使います。

以上の関数 2 種は Unix 環境でのみ用いることができます。

Python の外に目を向けてみる

身も蓋もない方法ではありますが、 os モジュールの system(command) 関数で外部の ln コマンドを呼び出してリンクを作ることもできます。 ln target1 target2 target3 ・・・ dir で一度に複数のリンクを作れるので案外バカにはできないです。

シンボリックリンク関連のネタ

あるパスを示す文字列がシンボリックリンクかどうか調べるためには os.path モジュールの islink(path) 関数を用います。 シンボリックリンクがサポートされていない環境でも一応呼ぶことができ、この場合必ず False が返ります。

シンボリックリンクが指しているパスを確認する関数があります。 os モジュールの readlink(path) です。 Unix 環境でのみ利用できます。

ファイルの情報(最終アクセス時間など)を得る os モジュールの stat(path) 関数はシンボリックリンクを調べたときリンク先の情報を返します。リンクをたどりたくないときは lstat(path) を用います。 こちらは stat(path) とほぼ動作は同じですが、シンボリックリンクを調べたときシンボリックリンクそのものの情報を返します。

ディレクトリを再帰的に探索する os モジュールの walk( top[, topdown=True [, onerror=None]]?) 関数はディレクトリを指し示すシンボリックリンクを ファイルではなくきちんとディレクトリ扱いします。 よってこのようなシンボリックリンクのファイル名はディレクトリ名リストのほうに入ります。 しかし、そのリンクをたどることはしません。無限ループ防止のための措置です。 もしディレクトリへのリンクをたどりたければ自力で調べるコードを書く必要があります。