ホーム
記事一覧
プライバシーポリシー
免責事項
お問い合わせ

Pythonでよく使うものをコピペ用にまとめてみた

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)

まとめ

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

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

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