python ファイル,ディレクトリ操作系
pythonでファイルやディレクトリなど操作するスクリプトを記述するときのための関数一覧メモ.参考にした方の記事を自分用に一覧にまとめただけ.
まぁいくつかは自分で文字列いじればいらない関数な気も.
使用モジュール
os
:雑多なオペレーティングシステムインタフェースshutil
:高レベルなファイルとディレクトリの操作glob
関数
ディレクトリ名から,ディレクトリ内ファイル名全取得
os.listdir(path)
ディレクトリ名とファイル名を結合
os.path.join('/path/to','test1.txt')
ディレクトリ名とファイル名に分割
os.path.split('/path/to/test1.txt')
フルパスからファイル名を取得
os.path.basename('/path/to/test1.txt')
ファイル名のタイトルと拡張子取得
ftitle, fext = os.path.splitext('/path/to/test1.txt') ftitle = '/path/to/test1' fext = '.txt'
ファイル/ディレクトリ名変更
os.rename("./test1.txt", "./test2.txt")
ファイル移動
shutil.move("./test2/test1.txt", ".")
後ろはディレクトリ名../
としなくてよい
ファイル削除・空ディレクトリ削除・なんでもディレクトリ削除
os.remove() os.rmdir() shutil.rmtree()
ディレクトリ作成
os.mkdir(path)
ファイルコピー
shutil.copyfile[copy, copy2]("./test1/test1.txt", "./test2.txt")
- copyfile, copyはメタデータがコピーされない.
- copy2はメタデータもコピー.
- copy2を使うとファイルの作成日とかもコピーされるようになるが,copyfile, copyはファイル作成日が新しくなる.
ディレクトリごとコピー
shutil.copytree("./test1", "./test2")
- 元々あるディレクトリ指定するとエラー
パスが存在するか、ファイルかどうか、ディレクトリかどうか
os.path.exists() os.path.isfile() os.path.isdir()
現在の作業ディレクトリ取得
os.getcwd()
Unix 形式のパス名のパターン展開
glob.glob(pathname)
pathnameにマッチしたパス名のリストを作成.(なければ空リストの作成)
- シェル形式と同じようにワイルドカードを使用可能.
- 相対、絶対ok
- ドットから始まるファイルは無視される.
10.7. glob — Unix 形式のパス名のパターン展開 — Python 2.7.x ドキュメント
特定のファイルだけ削除
[os.remove(f) for f in glob.glob("./test2/*.log")]