

以下スクリプトです。

[code]

    import datetime
    from dateutil.relativedelta import relativedelta
    import os
    
    today = datetime.datetime.today()
    one_month = today - relativedelta(months=1)
    #print("one_month_ago -> " + datetime.strftime(one_month_ago, '%Y-%m'))
    now = datetime.datetime.now()
    
    def down(dtime):
        i = dtime.strftime(one_month, 'chat-%Y%m.csv')
        print(i)
    
    down(now)
    
[/code]

エラー内容です。

[code]

    Traceback (most recent call last):
      File "test3.py", line 14, in <module>
        down(now)
      File "test3.py", line 11, in down
        i = dtime.strftime(one_month, 'chat-%Y%m.csv')
    TypeError: strftime() takes at most 1 argument (2 given)
    
[/code]

以上ですが、上記2つの引数をとれないといっていると思うですが、これをどのように変更すればよいかわかりませんでした。  
よろしくお願いします。


CC BY-SA 4.0
2020-03-06T02:56:57.923
63616
2020-03-06T07:42:48.697
2020-03-06T07:42:48.697
3060
38096
question
python python3
スクリプト実行時にエラー: strftime() takes at most 1 argument (2 given)


strftimeメソッドは、datetimeクラスのメソッドで、引数に日付・時間の書式(フォーマット)文字列を書きます。

[Pythonでstrftime関数を使う方法【初心者向け】](https://techacademy.jp/magazine/18883)の記事が判りやすいです。


CC BY-SA 4.0
2020-03-06T03:07:29.040
63617
2020-03-06T03:07:29.040
217
63616
answer


エラーそのものよりも、元々は1か月前の年月を取得したいようなので、以下の記事が参考になるでしょう。

[Pythonで翌日や翌月みたいな日付の計算をする](https://qiita.com/dkugi/items/8c32cc481b365c277ec2)

ただし、イマイチ何をどのタイミングでどうしたいかが不明なのでアドバイスがしにくいですね。  
`down`という名前で関数を作って`dtime`パラメータ指定しているのに、その中で`one_month`を特に説明もないようにして使っていたりするのは。

`dtime.strftime(one_month, 'chat-%Y%m.csv')`だけで言うなら、以下のいずれかで出来ます。

`dtime`パラメータを使った文字列化その１(エラーメッセージに関するだけの対処)

[code]

    i = dtime.strftime('chat-%Y%m.csv')
    
[/code]

`dtime`パラメータを使った文字列化その２(パラメータを2つ指定する方法)

[code]

    i = datetime.datetime.strftime(dtime, 'chat-%Y%m.csv')
    
[/code]

`one_month`を使った文字列化

[code]

    i = datetime.datetime.strftime(one_month, 'chat-%Y%m.csv')
    
[/code]

そして、`dtime`パラメータの1か月前を文字列化したいのならこちらです。

[code]

    one_month_ago = dtime - relativedelta(months=1)
    i = datetime.datetime.strftime(one_month_ago, 'chat-%Y%m.csv')
    
[/code]

あるいは1行にまとめるならこちら。

[code]

    i = datetime.datetime.strftime((dtime - relativedelta(months=1)), 'chat-%Y%m.csv')
    
[/code]


CC BY-SA 4.0
2020-03-06T03:25:27.057
63618
2020-03-06T03:33:43.303
2020-03-06T03:33:43.303
26370
26370
63616
answer