トッカンソフトウェア

Python ファイル操作(Windows)

ファイル操作をやります。


osモジュールの使用

osモジュールを使用してファイルを操作します。
				
"""
テストプログラム
"""
import os

# カレントフォルダを変更
os.chdir(r"C:\work\py")

# カレントフォルダを変更
print(os.getcwd())

# フォルダ作成
os.mkdir("test")

# フォルダ名変更
os.rename("test", "test2")

# カレントフォルダ内の全フォルダ、ファイルを表示
print(os.listdir())

# フォルダを削除
os.removedirs("test2")

# アプリを実行(終了するまで後続の処理は進まない)
os.system("mspaint")

# アプリを実行(ここで処理終了)
os.execvp("explorer", ["プログラム自体の名前", "C:\\"])

#↑を実行時点でPython処理は終了するため↓は実行されない
os.execlp("explorer", "プログラム自体の名前", "C:\\")


			
実行結果


os.chdirのパス指定でrを付けていますが、これを付けることで\のみでパスを書けます。
rを付けない場合、\\と書く必要があります。

アプリを実行は、os.system、os.execvp、os.execlpの3つをサンプルで書きましたが、
os.execの似たようなものが幾つかあります。これらは引数の書き方が異なります。


os.pathモジュールの使用

os.pathモジュールを使用してファイルを操作します。
				
"""
テストプログラム
"""
import os.path
import time
from datetime import datetime

# ファイル、フォルダの存在チェック
print(os.path.exists(r"C:\work\py\test.py"))

# フォルダの存在チェック
print(os.path.isdir(r"C:\work\py\test.py"))

# ファイルの存在チェック
print(os.path.isfile(r"C:\work\py\test.py"))

# 親フォルダパス取得
print(os.path.dirname(r"C:\work\py\test.py"))

# ファイル名取得
print(os.path.basename(r"C:\work\py\test.py"))

# 親フォルダとファイルに分割
print(os.path.split(r"C:\work\py\test.py"))

# パスをくっつける
print(os.path.join(r"C:\work\py", "test.py"))

# ファイル更新日を取得
print(os.path.getmtime(r"C:\work\py\test.py"))
print(time.gmtime(os.path.getmtime(r"C:\work\py\test.py")))
print(datetime.fromtimestamp(os.path.getmtime(r"C:\work\py\test.py")).strftime('%Y/%m/%d %H:%M:%S'))

# ファイルサイズを取得
print(os.path.getsize(r"C:\work\py\test.py"))


			
実行結果



shutilモジュールの使用

shutilモジュールを使用してファイルを操作します。
				
"""
テストプログラム
"""
import shutil

# ファイルコピー(コピー先にファイル名を指定)
shutil.copyfile(r"C:\work\py\test.py", r"C:\work\py\test2.py")
shutil.copy(r"C:\work\py\test.py", r"C:\work\py\test3.py")
shutil.copy2(r"C:\work\py\test.py", r"C:\work\py\test4.py")

# ファイルコピー(コピー先にフォルダを指定)
shutil.copy(r"C:\work\py\test.py", r"C:\work\py\test")

# フォルダコピー
shutil.copytree(r"C:\work\py\test", r"C:\work\py\test3")

# 移動(ファイルもフォルダも可)
shutil.move(r"C:\work\py\test3", r"C:\work\py\test4")

# フォルダ削除
shutil.rmtree(r"C:\work\py\test4")


			
実行結果


shutil.copyfileは指定ファイルを別ファイルにコピーします。
shutil.copyは上記に加えて、フォルダ指定にコピーもできます。
shutil.copy2は更新日時などファイルのメタ情報もコピーします。

ファイル一覧

ファイル一覧を取得する場合は、glob.globを使用します。子フォルダも対象にする場合は、recursive=Trueを付けて、**で検索します。
*は、*.txtなどフィルタ条件を指定します。
				
import glob

paths = glob.glob("C:/work/*")
for path in paths:
    print(path)

pathRs = glob.glob("C:/work/**", recursive=True)
for pathR in pathRs:
    print(pathR)

			


ページのトップへ戻る