スクリプトのお勉強

(小ネタ) python3 date_range + step付き

投稿日:

ちょっと前に同じような感じのネタを。。

したような気がするのだが、まぉおいておこう。。

素のPython3で、日付にてfor文を回す方法

日付で分割して処理をしたいと思うときがあります。
例えば、2022/04/23から、2022/06/1までの日付を3日毎に、処理したいとかが考えられます。

思ったより面倒で、なんとなくdateutilでやりたくなりますが、ライブラリを導入できないとします。

date_range関数

で、いろいろを参考に書いてみたのが以下です。

from datetime import date, timedelta


def date_range(start, stop, step = timedelta(1)):
    current = start
    while current <= stop:
        yield current
        current += step

    if current < stop + step:
        yield stop

# 呼び出しサンプル
print("timedelta=3");

start_date = date(2021,12,21)
end_date = date(2022,3,2)

for i, dt in enumerate(date_range(start_date, end_date, timedelta(3)):
    print(dt.strftime("%Y-%m-%d"))

動作結果は以下になります。

timedelta=3
2021-12-21
2021-12-24
2021-12-27
2021-12-30
2022-01-02
2022-01-05
2022-01-08
2022-01-11
2022-01-14
2022-01-17
2022-01-20
2022-01-23
2022-01-26
2022-01-29
2022-02-01
2022-02-04
2022-02-07
2022-02-10
2022-02-13
2022-02-16
2022-02-19
2022-02-22
2022-02-25
2022-02-28
2022-03-02

書いておいてなんですが、よく分かってない。

いまだにyieldってよく分かってません。もちろんループでちょいちょい戻るのは分かるのですが、どこで使っていいかを判断する基準が分かってません。

まぁ動くからいいことにしよう。。

参考

https://stackoverflow.com/questions/7274267/print-all-day-dates-between-two-dates/7274316

-スクリプトのお勉強

執筆者:

関連記事

Djangoアプリサンプル – 画像ファイルアップロード + 顔モザイク(画像アップロード編)

仕事で使用している、Djangoについて、サンプルを作成してみようと思います。ここでは、画像ファイルのアップロードと顔モザイクを行うwebアプリを作成してみようと思います。 この記事ではファイルアップ …

Ruby(Rails)で最小限にREST APIを立ち上げる

簡単にREST APIを立ち上げたいなーと思うときが仕事であります。別にRubyでなくてもいいのですが、一応前提がRubyであることにします。 仕事で必要になるには 現在の仕事を鑑みると、最低限以下の …

CentOS7 + Django2.2でSQlite3を使用する方法

そのままだとエラーになる 素のCentOS7で、SQLite3を使用して、Djangoアプリを起動すると以下のエラーになります。 File “/opt/webapps/django_upload/.v …

PyWebIOでform 入力+ REST API呼び出しを作ってみる

仕事柄、簡単なWebアプリを作りたいと思うことはよくあり、その場合はその場で直せるスクリプトで書きたいとよく思うものです。 すごーく簡単なフォームを非常に簡単に使いたいので、まずは簡単に作れるフレーム …

WSL2にOpenCV + Pythonをインストールする

お手軽にやろうと思ってやってみました。作業手順自体を見ると、お手軽ではないかもしれません。 環境 インストールする/した環境は以下の通りです。 WSL2Ubuntu 20.04.2 LTSPython …

    google オプトアウト Click here to opt-out.