MitchW
MitchW

Reputation: 149

Dynamic Variable Parameter Python

I feel like this isn't possible but I thought I would ask anyway. I have a short piece of code that I'm intending to use to add weeks/months/year to a given date. The time frame chosen will be dependent on a string passed. My question is when it comes to something like relativedelta is it possible to dynamically choose with parameter to use? So if the string passed is "weeks" then it would pass relativedelta(weeks=1) and if "months" it would pass relativedelta(months=1)? I've attached my code which I know doesn't work but it's just to illustrate what I'm imagining.

from datetime import datetime, timedelta
from dateutil.relativedelta import relativedelta

today = datetime.today()

print(today)
print(today + relativedelta(months=2))

loop = 1
for i in range(5):
    variable_weeks = 'weeks'
    next_month = today + relativedelta(variable_weeks=loop)
    date_string = next_month.strftime('%Y-%m-%d')
    print(date_string)
    loop += 1

Upvotes: 0

Views: 191

Answers (1)

MangoNrFive
MangoNrFive

Reputation: 1599

You can do:

...
variable_weeks = 'weeks'
next_month = today + relativedelta(**{variable_weeks: loop})
...

This uses a dict for the key-value pairs that you can define with variables. The dict is then unpacked as the input for relativedelta.

Upvotes: 2

Related Questions