3

このコードを毎日実行して、.csv ファイルに自動的に書き込みたいと思います。毎日を独自のファイルにしたいのか、それとも既存のファイルを毎日修正したいのかは確かです。前者を使用する場合は、コードが実行された日付で各ファイルに自動名前を付けたいと思います。現在、コードを実行するたびに上書きされる単一のファイルに書き込む方法を知っています。私はこのようにしました:

str1 = "\n".join(data)
outFile = open('sampledata.csv', 'write')
outFile.write(str1)
outFile.close()

これをコード化して、毎回新しい .csv ファイルに自動的に保存し、後続の各ファイルにコードが実行された日付の名前を付けるにはどうすればよいですか?

4

3 に答える 3

3

datetimeモジュールの関数を使用してdatetime.now()、現在の日付と時刻を取得するだけです。特定の形式が必要な場合は、strftime関数を使用して、必要な正確な形式を選択します。それ以外の場合は、 を使用して適切なデフォルトを選択してdatetime.datetime.now().date().isoformat()ください。

>>> import datetime
>>> now = datetime.datetime.now()
>>> now.strftime("%Y-%m-%d")
'2013-11-01'
>>> datetime.datetime.now().date().isoformat()
'2013-11-01'

コードを持ち込むと、最終的には次のようになります。

import datetime
str1 = "\n".join(data)

# Get the current date and time
now = datetime.datetime.now()
now_str = now.strftime("%Y-%m-%d")

# Write out to a file for today
outfilename = 'sampledata-{}.csv'.format(now_str)

outFile = open(outfilename, 'write')
outFile.write(str1)
outFile.close()

時間、分、秒、およびマイクロ秒が必要な場合は、date を呼び出さないでください (タイムスタンプが切り捨てられます)。

>>> import datetime
>>> datetime.datetime.now().isoformat()
'2013-11-01T21:55:45.465662'

ただし、これを Windows で実行している場合は、ファイル名に「:」を使用できません。ただし、Linux と Mac は準備ができています。

于 2013-11-02T02:37:04.890 に答える
1

最善の方法は、ループを実行するか、状態変数を保存して、後続の実行ごとにインクリメントすることです。つまり、

str1 = "\n".join(data)
outFile = open('sampledata'+str(i)+'.csv', 'write')
outFile.write(str1)
outFile.close()

私のコードでは、「i」はコードのどこかで追跡されている単なる整数値です。

于 2013-11-02T02:35:44.010 に答える
0

ファイル名に文字列形式を使用して、日付やその他の必要なデータを含めることができます。たとえばYYYY-MM-DD、ファイル名の末尾の拡張子の直前に日付を追加する方法は次のとおりです。

today = datetime.datetime.now().date()
filename = "sampledata{}.csv".format(today.isoformat())

with open(filename, 'w', newline="") as outFile:
    writer = csv.writer(outFile)
    # ...
于 2013-11-02T02:37:40.817 に答える