【Python入門】ファイルのコピー ディレクトリの操作- Python初心者勉強記020
今回は前回に引き続きファイルシステム上の操作を見ていきます。
ファイルシステムの操作
ファイルやディレクトリの移動
osモジュールのrename関数はファイルやディレクトリを移動(リネーム)します。第1引数がソースのパス名、第2引数がターゲットのパス名になります。ただし、異なるファイルシステム間でファイルやディレクトリを移動したい場合は、shutilモジュールのmove関数を使用します。
os.rename(変更前,変更後)
>>> os.rename('test.txt','test1.txt')
>>> os.rename('test1.txt','temp/test1.txt')
ファイルのコピー
shutilモジュールのcopyfile関数はファイルをコピーします。同じくshutilモジュールのcopy関数もファイルをコピーします。このとき、第2引数にディレクトリを指定すると、その直下にファイルがコピーされます。
また、shutilモジュールのcopy2関数は、copy関数と同様にコピーしますが、最終アクセス時間や最終更新時間などのデータもコピーされます。
>>> shutil.copyfile('test.txt','test1.txt')
>>> shutil.copy('test1.txt','temp')
>>> shutil.copy2('test1.txt','temp')
カレントディレクトリの変更
osモジュールのchdir関数は、カレントディレクトリを変更します。
>>> os.chdir('temp')
カレントディレクトリの絶対パスを取得
osモジュールのgetcwd関数は、カレントディレクトリを文字列を取得します。
>>> os.getcwd()
'/Users/UserName/Documents/python'
ファイル・ディレクトリ名のリストを取得
osモジュールのlistdir関数は、指定したディレクトリ直下のファイルやディレクトリの名前リストを取得します。
>>> os.listdir('.')
['temp']
globモジュールでパターン検索
globモジュールを使用すると、Unixシェルのマッチングルールでファイルやディレクトリ名を取得することができます。
>>> import glob
>>> glob.glob('*.txt')
['temp.txt', 'test1.txt']
>>> glob.glob('test?.*')
['test1.txt']
ディレクトリのコピー
shutilモジュールのcopytree関数は、ディレクトリとその内容をコピーします。個々のファイルはcopy2関数によってコピーされます。python2.6以降では,ignore引数にコピーしたくないファイルのパターンをglob形式で指定することができます。
また、symlinks引数にTrueを指定すると、ディレクトリ内にあるシンボリックリンクをシンボリックリンクとしてコピーします。デフォルトではFalseになっています。
>>> shutil.copytree('temp','temp1')
ファイル・ディレクトリ名を再帰的に取得
osモジュールのwalk関数は、指定のディレクトリ以下のファイル名・ディレクトリ名を再帰的に取得します。戻り値はジェネレータで、イテレーションごとにディレクトリを辿ってそのパスと、その直下のファイルのリストを返します。
例えば、次のコードは指定のディレクトリ以下で「temp.txt」が入っているディレクトリの絶対パスのリストを列挙します。
>>> for root, dirs, files in os.walk('.'):
... if 'temp.txt' in files:
... print(os.path.abspath(root))
...
/Users/UserName/Documents/python/temp
/Users/UserName/Documents/python/temp/test
/Users/UserName/Documents/python/temp1
ファイル・ディレクトリのメタデータの取得
osモジュールのstat関数で、ファイルのメタデータを取得できます。戻り値はオブジェクトで以下のような属性をもちます。
st_mode 保護モードビット
st_info iノード番号
st_dev デバイス
st_nlink ハードリンク数
st_uid 所有者のユーザid
st_gid 所有者のグループid
st_atime 最終アクセス時刻
st_mtime 最終更新時刻
st_ctime Unixでは最終メタデータ更新時刻,Windowsでは作成時刻
st_size ファイルのバイトサイズ
>>> m=os.stat('temp.txt')
>>> m.st_size
12
Python入門講座の次の記事はこちら => 【Python入門】アクセス権限の操作 一時ファイルの作成- Python初心者勉強記021