Pythonでよく使うものをコピペ用にまとめてみた
2020-08-14
2020-08-14
Python で何度も同じことを調べてしまうので、この記事にまとめます!
使っている Python バージョンは 3.6~3.7 です。
汎用的なものをまとめるので基本的にどのバージョンでも動くと思います。
紹介するものは標準で使えるものなので特に新しくインストールするものはないです。
ファイルパスリスト抽出
ある拡張子やあるフォルダ配下のファイルのパス一覧を取得するコードです。
使うのはglob
というモジュールです。
(参考:glob --- Unix 形式のパス名のパターン展開)
今、以下のようなディレクトリ構造があるとします。
.
├── files
│ ├── file1.txt
│ ├── file2.txt
│ ├── files2
│ │ ├── file1-Copy1.txt
│ │ └── file2-Copy1.txt
│ └── files3
│ ├── file1-Copy1.txt
│ └── file2-Copy1.txt
└── py_util.ipynb
files
配下の.txt
のファイルパスを知りたい場合は以下のコードでできます。
from glob import glob
path = "./files/*.txt"
path_list = glob(path)
print(path_list)
# ['./files/file2.txt', './files/file1.txt']
files
の配下のfiles2
とfiles3
の.txt
のパスも取得したい場合は以下のようにします。
path = "./files/*/*.txt"
path_list = glob(path)
print(path_list)
#['./files/files2/file1-Copy1.txt',
# './files/files2/file2-Copy1.txt',
# './files/files3/file1-Copy1.txt',
# './files/files3/file2-Copy1.txt']
また、recursive=True
にすると再起的にたどってファイルパスを取得することも可能です。
path = "./files/**/*.txt"
path_list = glob(path, recursive=True)
print(path_list)
#['./files/file2.txt',
# './files/file1.txt',
# './files/files2/file1-Copy1.txt',
# './files/files2/file2-Copy1.txt',
# './files/files3/file1-Copy1.txt',
# './files/files3/file2-Copy1.txt']
**
を使うと間の階層にあるディ レクトリ全てを指定できます。
フォルダを新しく作る
単純ですがけっこう使います。
import os
os.makedirs(path, exist_ok=True)
os.makedirs(path)
だけだと、すでにフォルダが存在する場合はエラーになるので、exist_ok=True
が必要になります。
ファイルコピーと移動
ファイルのパス抽出とフォルダ作成と合わせて使うことが多いです。
使うモジュールはshutil
です。
コピーしたい場合は以下のように書きます。
import shutil
def copy_files(path_list, copy_path):
for p in path_list:
shutil.copy(p, copy_path)
# 1行でも書ける
# copied_list = [shutil.copy(p, copy_path) for p in path_list]
移動の場合もコピーと同様にかけます。
def move_files(path_list, move_path):
for p in path_list:
shutil.move(p, move_path)
フォルダ、ファイル削除
簡単です。
ファイルの場合はパスを指定して以下で実行できます。
import os
path = "./files/file1.txt"
os.remove(path)
空じゃないフォルダを削除する場合は先ほど登場したshutil
を使います。
import shutil
path = "./files/files2"
shutil.rmtree(path)
まとめ
自分がよく使うものをまとめてみました。
それぞれ調べればすぐに出てきますが、一箇所にまとめてあると便利です。
今後も思いついたらこのページに追加します。