

Pythonでテキストファイルの名前に現在の日付と時間を入れたいのですが、変数を入れる方法がわからないです。

renameの方法はわかっているのですが文字列で名前を指定するのではなく、ファイル名にプログラムを実行した現在時刻を反映させたいと考えています。現在書き換えのコ‌​ードを下記に記しておきます。よろしくお願い致します。

[code]

    import os
    from datetime import datetime
    
    d = datetime.datetime.now()
    os.rename("sample.txt", d.txt)
    
[/code]

dの部分に日付時刻を入れたいです。


CC BY-SA 3.0
2015-12-02T08:53:06.367
19552
2015-12-02T23:44:24.900
2015-12-02T12:26:32.927
7290
13491
question
python
Python テキストファイルの名前に日付を入れたい


「python 日付 フォーマット」で検索すると、datetime型を文字列型に変更する方法が出てきます。  
dの部分に日付時刻を入れるには、`os.rename("sample.txt", d.txt)`を以下のように書き換えます。

**python 2.6以降**

[code]

    os.rename("sample.txt", "{0:%Y%m%d_%H%M%S}.txt".format(d))
    
[/code]

**python 2.6より前から利用可**

[code]

    os.rename("sample.txt", d.strftime("%Y%m%d %H%M%S") + ".txt")
    
[/code]

下記は一連のファイル作成とリネームのサンプルコードです。  
リネーム時に拡張子をそのまま保持するようにしてみました。参考まで。

[code]

    # -*- coding: utf-8 -*-
    
    import datetime
    import shutil
    import os
    
    now = datetime.datetime.now()
    #現在時刻を織り込んだファイル名を生成
    fmt_name = "hoge_{0:%Y%m%d-%H%M%S}.txt".format(now)
    with open(fmt_name, "w") as f:
        f.write("汝、今何時？")
    #テスト用に日付のないファイルを作成
    plain_name = "fuga.piyo.txt" 
    shutil.copy(fmt_name, plain_name)
    #現在時刻を拡張子の直前に追加
    ss = plain_name.split(".", 1)
    new_name = "{0}_{1:%Y%m%d-%H%M%S}.{2}".format(ss[0], now, ss[1])
    #既存のファイルをリネーム
    os.rename(plain_name, new_name) 
    
[/code]


CC BY-SA 3.0
2015-12-02T10:42:11.867
19557
2015-12-02T23:44:24.900
2015-12-02T23:44:24.900
9820
9820
19552
answer