質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
DateTime

多くのプログラミング言語におけるDateTimeオブジェクトは、日付と時間に関する演算と出力を行います。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

4回答

665閲覧

異なる時刻のタイムスタンプを取得したフォルダを出力したい

ffffu

総合スコア3

DateTime

多くのプログラミング言語におけるDateTimeオブジェクトは、日付と時間に関する演算と出力を行います。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2023/02/14 23:26

編集2023/02/14 23:49

実現したいこと

  • タイムスタンプを活用して異なる時刻ごとのフォルダを出力したいです。

前提

pythonのdt.datetime.now()の活用を検討しています。

発生している問題・エラーメッセージ

現在の仕様では実行時である、一番最初のタイミングの時刻のみを取得してしまっています。
イメージ説明

実現したいこと

それぞれの出力されたフォルダの時刻が異なるように出力したいです。
(秒数のところが変わるイメージ)
イメージ説明

該当のソースコード

# タイムスタンプの定義 dt_now = dt.datetime.now() timestamp = dt_now.strftime('%Y%m%d_%H%M%S') # 出力ファイルパス def convent_output_path(foldername, filename): return output_root.joinpath(f'{timestamp}-{foldername}', f'{filename}') #出力するフォルダ # classify_predict OUTPUT_1 = convent_output_path('3_classify_predict', 'XX.csv') OUTPUT_2 = convent_output_path('3_classify_predict', 'XX.csv') OUTPUT_3 = convent_output_path('3_classify_predict', 'XX.csv') # classfy_ex OUTPUT_4 = output_root.joinpath('4_classify_ex', 'XX.csv') # plan OUTPUT_5 = convent_output_path('5_plan', 'XX.csv') # plan_ex OUTPUT_6 = convent_output_path('6_plan_ex', 'XX.csv')

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2023/02/14 23:37

どういう出力をしたいんでしょうか。具体的に例示ください。 いまいち問題が見えません
ffffu

2023/02/14 23:50

投稿に出力イメージを追加いたしました。ご確認お願いいたします。
TakaiY

2023/02/15 01:12 編集

質問にあるコードそのもので、タイムスタンプの時刻を変えたいということでしょうか? このコードだと、 classify_predict、 classfy_ex、plan、plan_exはほぼ同時に作られるので、ほとんどの場合同じ時刻になると思うのですが。 質問の言う「タイムスタンプ」とは何の時刻を指していますか? ちなみに、質問のコードだと、時刻を1回しか作っていないので、同じ時刻になるのは当然です。 上記のコメントは、回答にある、時刻の取得を押し込んだ場合のことです。
guest

回答4

0

やりたいこと(タイムスタンプ値に求める条件)がいまひとつ理解できませんが、タイムスタンプ部分は毎秒の連番とすればよいのではないでしょうか。
以下コードでは、連番の基準値はTimePathインスタンスの生成時に決まります。

Python

1from datetime import datetime, timedelta 2from pathlib import Path 3 4class TimePath: 5 def __init__(self, root=''): 6 self.dt = datetime.now() 7 self.output_root = Path(root) 8 9 def get(self, foldername, filename): 10 timestamp = self.dt.strftime('%Y%m%d_%H%M%S') 11 ret = self.output_root.joinpath(f'{timestamp}-{foldername}', f'{filename}') 12 self.dt = self.dt + timedelta(seconds=1) 13 return ret 14 15tp = TimePath() 16for i in range(3): 17 ret = tp.get(f'folder{i+1}',f'file{i+1}') 18 print(ret) 19""" 2020230215_122723-folder1\file1 2120230215_122724-folder2\file2 2220230215_122725-folder3\file3 23"""

投稿2023/02/15 03:31

can110

総合スコア38262

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

マイクロ秒単位にしてみるなど。(これでもバッティングするかもしれませんが)

python

1def convent_output_path(foldername, filename): 2 timestamp = dt.datetime.now().strftime('%Y%m%d_%H%M%S.%f') 3 return output_root.joinpath(f'{timestamp}-{foldername}', f'{filename}')

投稿2023/02/15 01:37

melian

総合スコア19714

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

単に、convent_output_pathの中に押し込めばいいいのでわ。

diff

1-# タイムスタンプの定義 2-dt_now = dt.datetime.now() 3-timestamp = dt_now.strftime('%Y%m%d_%H%M%S') 4 5 # 出力ファイルパス 6 def convent_output_path(foldername, filename): 7+ # タイムスタンプの定義 8+ dt_now = dt.datetime.now() 9+ timestamp = dt_now.strftime('%Y%m%d_%H%M%S') 10 return output_root.joinpath(f'{timestamp}-{foldername}', f'{filename}') 11 12 #出力するフォルダ

投稿2023/02/15 00:09

shiketa

総合スコア3971

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ffffu

2023/02/15 00:34

中に押し込んでみましたが、同じ時刻が入力されてしまいました。 別の回答者様からのご意見で「dt.datetime.now() などではごく短い時間に連続して実行した場合に同じ値を返すことがある」ということが関係しているのかもしれません。
guest

0

dt.datetime.now() などではごく短い時間に連続して実行した場合に同じ値を返すことがありますから、前の値を記憶しておいて適当なディレイの後で再実行するなどに工夫が必要でしょう。タイムスタンプにこだわらないなら適当な連番を付加しても良いかと思います。

投稿2023/02/15 00:08

n24bass

総合スコア45

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問