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の配下のfiles2files3.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)

まとめ

自分がよく使うものをまとめてみました。

それぞれ調べればすぐに出てきますが、一箇所にまとめてあると便利です。

今後も思いついたらこのページに追加します。