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)
ページのトップへ戻る