Pythonでファイル操作

書きかけだけど公開しておく。

まずは

import

import shutil
from pathlib import Path

とりあえずこの2つがあればOK

Pathのよく使うやつ

# --- 基本 ---
# 文字列からPath作成 
dir_path = ("/home/hoge")

# パス結合は/演算子で
path = dir_path / "fuga.txt"

# 相対パスでも指定可能だけど
path = Path("hoge/huga.txt")

# resolveで絶対パスにしておいたほうが無難な気がする
path = path.resolve()

# --- 取得系 ---
# カレントディレクトリ
cur = path.cwd()

# この.pyファイルのあるpath
path = Path(__file__)

# 親ディレクトリ、ファイル名だけ、 拡張子だけ、拡張子なしファイル名だけ
path = Path("/home/hoge/fuga.txt")
par = path.parent # Path("/home/hoge")
pa2 = path.parents[1] # Path("/home")
file = path.name # "fuga.txt"
ext = path.suffix # "txt"
body = path.stem # "huga"

# パスの要素
parts_list = path.parts  # ["/", "home", "hoge", "fuga.txt"]

# ディレクトリ直下のやつ全部 (ジェネレータが返る)
all_file = path.iterdir()

# .txtファイルだけとかならこう(多分直下だけじゃなく孫ひ孫も含む)
all_txt = dir_path.glob("*.txt")

# --- 確認系 ---
# ファイルかディレクトリかあるかないか
if path.is_dir():
    # ディレクトリのときの処理
elif path.is_file():
    # ファイルのときの処理
elif not path.exists():
    # 存在しないときの処理


# --- 生成・削除 ---
# ディレクトリやファイル作る。引数は親も一緒に作るか、すでにあってもエラー出さなくていいか
path.mkdir(parent=True, exists_ok=True)
path.touch()

# ディレクトリやファイル消す
path.rmdir() #中身あったら消せない
path.unlink()

path指定いろいろ

# このファイルのディレクトリ
path = Path(__file__).parent

コピー ファイル→ファイル

# ファイル名指定してコピー
shutil.copy(src_file, dst_file)

# ファイル名そのまま別ディレクトリにコピー
shutil.copy(src_file, dst_dir)

python

Posted by gran-gran-gran