- 3
- 이니스프리
- 조회 수 1696
안녕하세요?
윈도우 등 특정 OS에서 datetime 모듈에서 datetime 클래스를 사용할 때 invalid format string 에러가 발생하는 현상과 관련하여 질문 드립니다.
datetime.datetime(2020, 3, 4, hour=15, minute=49, second=34)와 같은 표현이 다른 OS에서는 문제가 없는데요.
(https://repl.it/languages/python3 에서 잘 작동합니다.)
유독 윈도우에서 다음과 같은 에러를 뿜는군요 ㅠㅠ
Traceback (most recent call last):
File "c:\Users\Audrey\.vscode\extensions\ms-python.python-2020.2.64397\pythonFiles\ptvsd_launcher.py", line 48, in <module>
main(ptvsdArgs)
File "c:\Users\Audrey\.vscode\extensions\ms-python.python-2020.2.64397\pythonFiles\lib\python\old_ptvsd\ptvsd\__main__.py", line 432, in main
run()
File "c:\Users\Audrey\.vscode\extensions\ms-python.python-2020.2.64397\pythonFiles\lib\python\old_ptvsd\ptvsd\__main__.py", line 316, in run_file
runpy.run_path(target, run_name='__main__')
File "C:\Users\Audrey\AppData\Local\Programs\Python\Python37\lib\runpy.py", line 263, in run_path
pkg_name=pkg_name, script_name=fname)
File "C:\Users\Audrey\AppData\Local\Programs\Python\Python37\lib\runpy.py", line 96, in _run_module_code
mod_name, mod_spec, pkg_name, script_name)
File "C:\Users\Audrey\AppData\Local\Programs\Python\Python37\lib\runpy.py", line 85, in _run_code
exec(code, run_globals)
File "c:\Users\Audrey\Documents\Docker\pause_test.py", line 4, in <module>
pause.until(dt)
File "C:\Users\Audrey\AppData\Local\Programs\Python\Python37\lib\site-packages\pause\__init__.py", line 46, in until
end = float(time.strftime('%s.%f'))
ValueError: Invalid format string
구글링해보니 datetime이 운영체제의 시간을 받아온다는 설명이 있던데요.
윈도우에서 이 문제를 어떻게 해결하면 좋을지 여쭤봅니다.
그럼 좋은 오후 되세요 ^-^
감사합니다!!
작성자
댓글 3
datetime.datetime(2020, 3, 4, hour=15, minute=49, second=34) 의 문제는 아니고 strftime 함수에 전달된 인자 중에서 %s 에 의해 발생하는 오류입니다.
https://github.com/jgillick/python-pause/blob/v0.2/pause/__init__.py
0.2 버전에서는 strftime이 아닌 다른 방식으로 작성되어 있어서 해당 오류는 발생하지 않을 거 같네요.
python-pause 모듈의 버전을 확인해서 업그레이드를 해보시기 바랍니다.
허걱 pause 모듈의 문제였군요 ㅠㅠ
제가 애꿎은 datetime 모듈의 문제라고 생각해서 datetime 모듈만 업그레이드를 시도해봤거든요 ㅜㅜ
말씀해주신대로 pause 모듈을 업그레이드하니 잘 작동하네요 ㅎㄷㄷ
라이브러리를 사용하다가 문제가 발생하면 너무 막막하던데 humit 님처럼 github에서 소스를 확인하는 방식으로 공부를 해봐야겠네요~
관악구에도 코로나 19 현황 문자가 자주 오던데 humit 님께서도 항상 건강하시길 기원합니다!
번번이 큰 도움을 주셔서 감사드립니다!!
이유는 잘 모르겠는데 다음과 같이 처리하면 에러가 발생하지 않는군요 ^^
t = datetime.datetime.today()
future = datetime.datetime(t.year,t.month,t.day,hour=16,minute=0,second=5)
또는
future = datetime.datetime(t.year,t.month,t.day,16,0,5)