2010年2月23日 1:22 AM by Abalone
久々のPythonである。
処理中に色々ファイル処理をする時には、カレントディレクトリ移動などを伴う場合もある。実際今Pythonで作成しているソフトウェアでは、かなり多くのファイルから入力を行ったり、ファイルの生成を行うため、カレントディレクトリをあちこち変更したり等する必要が出てきて、早速マニュアルを調べたり、実験してみたり。
まず、カレントディレクトリを移動する前に、現在のカレントディレクトリを保存しておく必要がある場合。
どこかのディレクトリに移動して処理を行った後、元のディレクトリに戻しておく必要がある、みたいな設計をしている場合には、ディレクトリ移動を行う前に現在のディレクトリを保存しておく。getcwd()関数でカレントディレクトリのパスを取得可能。モジュールはosである。
#!/usr/bin/python
import os
print os.getcwd()
一行しかないのだが、こんな感じのコードでカレントディレクトリを取得できる。実行結果は以下の通り。
bash-3.2$ ~/python/path_test.py
~/python/path_test.py
/private/var/log
bash-3.2$
ディレクトリを変更するには、os.chdir()。
import os
os.chdir('/')
print os.getcwd()
実行結果は以下の通り。
bash-3.2$ ./path_test.py
./path_test.py
/
bash-3.2$
カレントディレクトリが’/'(ルートディレクトリ)に変更されているのが分かる。
とりあえず上記関数と、以前に書いたディレクトリリスティングに加え、ファイルがディレクトリかどうかを判定できる関数があればとりあえずあちこち見て回れる。ディレクトリかどうかを判定するには、os.path.isdir()を使う。
import os
print os.path.isdir('/')
print os.path.isdir('%s/path_test.py' % os.getcwd())
2行目は引数にスクリプト自身をフルパスで渡すことになるので、期待する返値はFalse。
実行結果は以下の通り。
bash-3.2$ ./path_test.py
./path_test.py
True
False
bash-3.2$
こんな感じである。
- カレントディレクトリ取得 os.getcwd()
- カレントディレクトリ移動 os.chdir()
- ディレクトリかどうか確認 os.path.isdir()
ということでした。
トラックバックURL
この記事に対するコメント/トラックバックはまだありません
コメントをどうぞ



