ページへ戻る

− Links

 印刷 

Python​/ファイル操作 :: NJF Wiki

xpwiki:Python/ファイル操作

Pythonではファイルやディレクトリの存在チェックや削除など、主なファイル操作が一通りできるようになっています。

ただ、ファイル操作が中心ならshellを使った方が簡単なことが多いので、無理になにもかもPythonを使うより組み合わせたりするのがおすすめです。

ページ内コンテンツ
  • ファイルやディレクトリの存在チェック
    • ファイルとディレクトリを区別しない存在チェック
    • ファイルとディレクトリを区別する存在チェック
  • ディレクトリの作成
  • ディレクトリの削除
  • ファイルの削除
  • ファイルの移動
  • ファイル、ディレクトリの名前の変更
  • ファイル一覧の取得

ファイルやディレクトリの存在チェック anchor.png[1] Edit [2]

Page Top

ファイルとディレクトリを区別しない存在チェック anchor.png[3] Edit [4]

ファイルまたはディレクトリを区別しない存在チェックには「os.path.exists」を使います。 ファイル、ディレクトリ(フォルダ)どちらにも適用できて、相対パス、絶対パスどちらでも可能です。

import os
if os.path.exists("../"):
    print "exist!"
else:
    print "not exist"

結果

exist!

「../」は自分自身の実行されているディレクトリを指すので、必ず存在します。このようにファイルやディレクトリが存在すると、真を返します。

Page Top

ファイルとディレクトリを区別する存在チェック anchor.png[5] Edit [6]

存在してかつファイルかどうかまで判定するには「os.path.isfile」、ディレクトリかどうかは「os.path.isdir」を使います。

使い方は「os.path.exists」と全く同じです。

if os.path.isdir("../"):
    print "dir!"
else:
    print "not dir"


if os.path.isfile("../"):
    print "file!"
else:
    print "not file"

結果

dir!
not file
Page Top

ディレクトリの作成 anchor.png[7] Edit [8]

ディレクトリを作成するには「os.mkdir」を使います。

import os

os.mkdir("test_dir")

すでに存在するとエラーになるので、たいてい前節のディレクトリの存在チェックとあわせて使うことになります。

Page Top

ディレクトリの削除 anchor.png[9] Edit [10]

ディレクトリが空なら「os.rmdir」を使います。

os.rmdir("test_dir")

空では無く、中身も一緒に消したいときは「shutil.rmtree」を使います。

import shutil
shutil.rmtree("test_dir")
Page Top

ファイルの削除 anchor.png[11] Edit [12]

ファイルを削除するには「os.remove」を使います。

os.remove("test.txt")
Page Top

ファイルの移動 anchor.png[13] Edit [14]

ファイルを移動するには「shutil.move」を使います。

shutil.move("test1.txt","test2.txt")
Page Top

ファイル、ディレクトリの名前の変更 anchor.png[15] Edit [16]

ファイルなどの名前変更は「os.rename」を使います。

os.rename("test1.txt","test2.txt")
Page Top

ファイル一覧の取得 anchor.png[17] Edit [18]

指定したディレクトリの中のファイル一覧を取得するには、「os.listdir」を使います。

files = os.listdir('./')
 
for f in files:
    print f

ワイルドカードを使うには「glob.glob」を使います。

import glob
files = glob.glob('./*.py') 

for f in files:
    print f

Last-modified: 2016-12-30 (金) 04:19:29 (JST) (2667d) by njf