ライブのCentOSプロダクションサーバで実行されているDjangoプロジェクトがあります。私は約9日前にコードを最後に更新し、今日まですべてがうまくいっていました。突然、私は意味をなさない邪魔な誤りを得るようになりました。ここに私のトレースバックは、次のとおりです。ここでpython datetime.strptime()がフォーマットに一致しません "エラー
[Fri Nov 04 18:43:00 2016] [error] File "/usr/lib/tethys/src/tethys_apps/tethysapp/hydroshare_gis/utilities.py", line 1196, in res_has_been_updated
[Fri Nov 04 18:43:00 2016] [error] db_date_obj = datetime.strptime(db_date.split('+')[0], '%Y-%m-%dT%X.%f')
[Fri Nov 04 18:43:00 2016] [error] File "/usr/local/lib/python2.7/_strptime.py", line 325, in _strptime
[Fri Nov 04 18:43:00 2016] [error] (data_string, format))
[Fri Nov 04 18:43:00 2016] [error] ValueError: time data '2016-10-15T15:12:41.787370' does not match format '%Y-%m-%dT%X.%f'
はかなりまっすぐ進む、エラーがスロー機能である:
def res_has_been_updated(db_date, res_date):
db_date_obj = datetime.strptime(db_date.split('+')[0], '%Y-%m-%dT%X.%f')
res_date_obj = datetime.strptime(res_date.split('+')[0], '%Y-%m-%dT%X.%f')
if db_date_obj < res_date_obj:
return True
return False
私は一時的に入ってくるの日付をダブルチェック、およびこれにいくつかのprint文を追加しました彼らがどのように見えるかです:
2016-06-14T13:30:42.735448+00:00
今狂気私を呼んで、私は、このPythonインタプリタに反対しなければならない...その時のデータはマットを行いますフォーマットしてください。どのように私はとてもわかりますか? 1)私は目を持っています。 2)これは今日までうまくいきました(私はコードを変更せず、入力は変更されていません)。そして3)正確な行をpythonコンソールにハードコーディングしました。つまり、datetime.strptime('2016-06-14T13:30:42.735448+00:00'.split('+')[0], '%Y-%m-%dT%X.%f')
のようになりました。
私はこの特定のプロジェクトを扱うコードに触れる唯一の開発者ですが、メンテナンスやその他の活動のためにサーバーにアクセスする他の人がいます。私はいくつかのPythonモジュールが最近インストールされていることを知っています(matplotlibは1つです)。誰かがsupervisordを実装してサーバーのプロセス制御を処理しています。なぜ私はそれらが標準のPython呼び出しの有効性に影響を与えるのか分かりませんが。私はそこに天才や輝きを使用することができます。ありがとうございました。
これは再生できません。あなたが言うように、 'datetime.datetime.strptime( '2016-10-15T15:12:41.787370'、 '%Y-%m-%dT%X.%f')'はうまく動作します。 –
9日前に行った変更、それは関連していますか?サーバーを再起動するのを忘れて、古いコードが実行されていた可能性はありますか?また、printステートメントは出力をファイルに出力しますか?文字列の中に目に見えない文字がないことをチェックするために、vimのようなファイルを開いたことがありますか?フォーマット文字列をチェックして、それに目に見えない文字がないこと、そしてY(とTとX)が本当に彼らが想定している英語の文字であることを確認できますか? (ギリシャ文字は全く同じように見えますが、異なっています) –