OSコマンドとpathlibの対比を整理する。
from pathlib import Path
from stat import filemode
from shutil import rmtree
p_new_file = Path('./new_file.txt')
p = Path('.')
OSコマンド | pathlib |
---|---|
touch | p_new_file.touch() |
rm | p_new_file.unlink() |
chmod 755 | p_new_file.chmod(0o755) # 8進数で指定 |
ls -la # 権限確認 | filemode( p_new_file.stat().st_mode) |
ls -la # owner確認 | p_new_file.owner() |
ls -la # group確認 | p_new_file.group() |
ls -la # 存在確認 | p_new_file.exists() |
ls -la # ファイル確認 | p_new_file.id_file() |
ls -la # ディレクトリ確認 | p_new_file.is_dir() |
ls -lF (grep -v \) # ファイルだけ | [x for x in p.iterdir() if x.is_file()] # ファイル一覧 |
ls -lF (grep \) # ディレクトリだけ | [x for x in p.iterdir() if x.is_dir()] # ディレクトリ一覧 |
pwd | p.cwd() |
mkdir | p.mkdir() |
mkdir -p | p.mkdir(parents=True) |
rm -fr | rmtree(p) |
固有の話
やりたいこと | pathlib |
---|---|
絶対パス変換 | p_new_file.resolve() |
パス連結 | p_new_file / 'sub_dir' / 'file2.txt |
ファイル名 | p_new_file.name |
絶対パスか判定 | p_new_file.is_absolute() |
親ディレクトリ | p_new_file.resolve().parent |
拡張子取得 | p_new_file.resolve().suffix |
同じディレクトリに別名ファイルを作る | p_new_file.with_name('file_new.txt') |
パターン検索 | p.glob('**/*.txt') |
ファイル削除 内包 | [p.unlink() for p in p_temp.glob('**/*') if re.search('\d+.txt', str(p)) and p.is_file()] |
ファイルのopen | with p_new_file.open(mode='w') as f: |
ファイルの読み込み # ファイルのopenの後で | f.read() # ファイル全体を文字列として読み込み f.readlines() # ファイル全体をリストとして読み込み f.readline() # ファイルを一行づつ読み込み |