ファイルシステム操作
Pythonにおけるファイルとディレクトリ(フォルダ)の操作を学習しましょう。 存在チェック、削除、コピーなどの例を列挙していきます。
7行目の「exists」でファイルもしくはディレクトリの存在チェックを行っています。 この「exists」はファイルでもディレクトリでも存在さえしていればTrueを返すので、10行目と13行目でそれぞれのチェックを行っています。
# -*- coding: utf-8 -*-
import os
filepath = 'c:/python'
if os.path.exists(filepath):
print u'指定のファイル、またはディレクトリが存在しています。'
if os.path.isfile(filepath):
print u'指定のパスはファイルです。'
if os.path.isdir(filepath):
print u'指定のパスはディレクトリです。'
else:
print u'指定のファイル、またはディレクトリが存在していません。'
--実行結果--
指定のファイル、またはディレクトリが存在しています。 指定のパスはディレクトリです。
まずは下記サンプルをご覧ください。 「show_dir」関数は指定パス以下のディレクトリを全て表示させる関数となります。ディレクトリの作成・削除の確認の為に使用しています。
# -*- coding: utf-8 -*-
import os
import shutil
def show_dir(path):
print '========================================'
for dirpath, dirnames, filenames in os.walk(path):
for dirname in dirnames:
print os.path.join(dirpath, dirname)
tmpdir = 'c:/python/tmp'
os.mkdir(tmpdir)
os.makedirs('c:/python/tmp/mkdir1/mkdir2/mkdir3')
show_dir(tmpdir)
os.rmdir('c:/python/tmp/mkdir1/mkdir2/mkdir3')
show_dir(tmpdir)
# os.removedirs(tmpdir)
shutil.rmtree(tmpdir)
15行目で単一のディレクトリを作成しています。引数にはパスを指定してください。 16行目の「makedirs」は途中のディレクトリが存在していなくてもパス通りの階層で作成してくれます。
# -*- coding: utf-8 -*-
import os
import shutil
def show_dir(path):
print '========================================'
for dirpath, dirnames, filenames in os.walk(path):
for dirname in dirnames:
print os.path.join(dirpath, dirname)
tmpdir = 'c:/python/tmp'
os.mkdir(tmpdir)
os.makedirs('c:/python/tmp/mkdir1/mkdir2/mkdir3')
show_dir(tmpdir)
os.rmdir('c:/python/tmp/mkdir1/mkdir2/mkdir3')
show_dir(tmpdir)
# os.removedirs(tmpdir)
shutil.rmtree(tmpdir)
19行目では先ほど作成した「mkdir3」を削除しています。 23行目の「rmtree」は、再帰的のディレクトリの削除を行います。 コメントアウトされている22行目の「removedirs」は、削除対象のディレクトリが空でないとエラーとなるのでご注意ください。 大事なファイルなどを誤って削除してしまうのを防ぐ効果もあります。
--実行結果--
======================================== c:/python/tmp\mkdir1 c:/python/tmp\mkdir1\mkdir2 c:/python/tmp\mkdir1\mkdir2\mkdir3 ======================================== c:/python/tmp\mkdir1 c:/python/tmp\mkdir1\mkdir2
ファイル、ディレクトリをコピーするには「shutil」モジュールを使用します。 6行目は単一のファイルもしくはディレクトリのコピーを行い、7行目は再帰的にディレクトリをコピーします。
# -*- coding: utf-8 -*-
import os
import shutil
shutil.copy('c:/python/src.txt', 'c:/python/dest.txt')
shutil.copytree('c:/python', 'c:/python_backup')
閉じ忘れ防止!
▶応用編:with文
