Pythonでリストに要素を追加をする方法、リストの要素を並び替えをする方法


sort

photo credit: nik.golding Newbury Parkrun via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

プログラミング初心者&Windowsユーザー向け、Pythonでフォルダ内の古いファイルを自動削除するツールの作り方をお伝えしています。

前回の記事はコチラ。

Pythonでフォルダ内の特定の拡張子のファイルだけ抽出する方法
プログラミング初心者&Windowsユーザー向けPythonで古いファイルを自動で削除するツールの作り方をお伝えしています。今回はPythonでフォルダ内の特定の拡張子のファイルだけ抽出する方法についてです。

フォルダ内の特定の拡張子のファイルを抽出するところまで進みました。

以下の手順でいうと、2の途中までいった感じですね。

  1. フォルダ内のファイルを全てについてループする
  2. その中でZIPファイルがあれば作成日時とファイル名をリスト化する
  3. リストの数が3を超えていたら、作成日時が古いファイルを削除する

今回はその続きを進めていきますよ。

Pythonでリストに要素を追加をする方法、リストの要素を並び替えをする方法です。

では、行ってみましょう!

スポンサーリンク

前回のおさらい

前回作ったスクリプトはコチラです。

import os
for file in os.listdir():
    base, ext = os.path.splitext(file)
    if ext == '.zip':
        print('file:{},ext:{}'.format(file,ext))

os.listdir関数で作業フォルダ内の全てのファイルについて繰り返し、その拡張子が「.zip」であればprintするというものでした。

拡張子を分割するにはos.path.splitext関数を使いました。

appendメソッドでリストに追加をする

まず、拡張子が「.zip」のファイルについて、そのファイル名と作成日時をリストとして蓄積をしていきたいと思います。

リストに要素を追加するにはappendメソッドを使います。

書き方はコチラ。

リスト.append(要素)

ファイルと作成日時をリスト化したいので、二次元リストになりますかね。

リストに要素を追加するスクリプト

このようなスクリプトを作りました。

import os
filelists = []
for file in os.listdir():
    base, ext = os.path.splitext(file)
    if ext == '.zip':
        filelists.append([file, os.path.getctime(file)])
print(filelists)

appendメソッドを使うには、リストは空でも用意しておく必要があるので、2行目で空のリストを定義しています。

6行目ですが、appnedメソッドでリストに追加しています。

なお、ファイルの作成日時を取得するにはos.path.getctime関数でしたね。以下記事をご参考ください。

Pythonでファイルの作成日時・更新日時・アクセス日時を取得する方法
非エンジニア&Windowsユーザー向けにPythonでフォルダ内の古いファイルを自動削除するツールの作り方をお伝えしています。今回はPythonでファイルの作成日時・更新日時・アクセス日時を取得する方法です。

実行をしますと…

Pythonでリストに要素を追加する

作成日時はエポック秒なので、パッと見わけがわかりませんが、一応リスト化はうまくいってそうですね。

リストを作成日時降順で並び替える

リストを並び替えるにはsortメソッドを使います。

書き方はコチラ。

リスト.sort(key=itemgetter(インデックス), reverse=True)

まず、itemgetterというのは、operatorモジュールの関数ですので、インポートしておく必要があります。

from operator import itemgetter

それで、インデックスでリストの何番目の要素をソートの基準にするかを指定します。

今回は、二つ目の作成日時を基準にしたかったので、インデックス1を指定すればOK。

また、reverse=Trueは省略可能ですが、省略すると昇順、そのまま書いておけば降順での並び替えになります。

つまり、ここをTrueにしておけば、リストを作成日時の降順で並び替えをすることができるというわけです。

リストの要素を並び替えるスクリプト

スクリプトを以下のように修正しました。

8行目にsortメソッドを追加しています。

import os
from operator import itemgetter
filelists = []
for file in os.listdir():
    base, ext = os.path.splitext(file)
    if ext == '.zip':
        filelists.append([file, os.path.getctime(file)])
filelists.sort(key=itemgetter(1), reverse=True)
print(filelists)

こちらのスクリプトを実行すると…

Pythonでリストを降順に並び替える

このように、作成日時の降順でリストを並び替えることができました。

まとめ

以上、Pythonでリストに要素を追加する方法、リストの要素をソートする方法をお伝えしました。

  • appendメソッドでリストに要素を追加
  • sortメソッドでリストを並び替え

では、次回は対象ファイルが一定以上であれば古いファイルを削除する処理を追加していきましょう。

どうぞお楽しみに!

連載目次:Pythonでフォルダ内の古いファイルを自動削除するプログラム

フォルダの中にどんどんたまっていくファイルたち…。Pythonでツールを作って、ファイルの数が一定数を超えたら古い削除から自動で削除するようにしちゃいましょう。

  1. Pythonでファイルの作成日時・更新日時・アクセス日時を取得する方法
  2. Pythonでフォルダ内の特定の拡張子のファイルだけ抽出する方法
  3. Pythonでリストに要素を追加をする方法、リストの要素を並び替えをする方法
  4. Pythonでフォルダ内の古いファイルを削除するスクリプトを作る方法

タイトルとURLをコピーしました