어떤 프로그램을 테스트 할 때 pytest를 쓰는 편입니다. 이번 시간에는 print 문으로 출력한 것을 어떻게 콘솔로 볼 수 있는지 알아보겠습니다. 기본적으로 pytest는 capture 옵션을 fd로 받게 되어 있습니다. 이는 문서에도 나와 있는 부분이에요. 1번과 2번 데스크립터에 쓰여지는 내용, 즉 표준 출력과 오류가 모두 캡쳐되는 것이 default입니다. 실험을 하나 해 보겠습니다. 예제 프로그램 1번은 test_feature_a라는 함수를 만들었습니다. 간단하게 "1"을 표준 출력에 출력합니다. 그런데, 1이라는 것은 출력되지 않았습니다. 이는, 문서에 따르면 캡쳐되었기 때문입니다. 이것은 어떨까요? 1.txt에 1이라는 내용을 쓰는 프로그램입니다. 역시 테스트는 성공하였습니다. 1.txt에..
python 검색 결과
현재 시각을 utc 기준으로 1970년 1월 1일 0시 0분 0초로부터 경과된 시간을 구하고 싶습니다. 이럴 때 timestamp 함수를 쓸 수 있습니다. 이 함수는 POSIX timestamp를 float 형태로 돌려줍니다. datetime.now(timezone.utc)는 현재 시각을 utc 타임존 정보를 붙여서 리턴해 줍니다. 여기에 timestamp 메서드를 붙였는데요. 이렇게 되면, 1970년 1월 1일 0시 0분 0초부터 경과된 시간을 초 단위로 돌려주게 됩니다. 1679064828.282969초가 지났다고 하는군요. 만약에 그 이전의 날짜를 넣으면 어떻게 리턴될까요? utc 기준으로 1900년 3월 1일 9시는 1970년 1월 1일 0시 이전의 시간입니다. timestamp로 한 번 출력해 ..
python에서 정말 긴 문자열을 여러 줄에 걸쳐서 표현할 수 있는 방법이 없을까요? 가장 먼저 생각해 볼 수 있는 방법은, 배열로 만든 다음에 "".join으로 연결해 버리는 것입니다. 위 예제를 보겠습니다. 문자열을 이루는 문자열들을 str_set에다가 모아 놓았습니다. 다음에 "".join으로 str_set에 있는 문자열들을 모두 join해서 출력하게 됩니다. 출력 결과를 보겠습니다. abcdef가 나오는군요. 그런데, (로 감쌀 수도 있습니다.위와 같이 입력해 봅시다. 그래도 똑같이 나옵니다. 긴 문자열도 2가지 방법으로 깔끔하게 정돈할 수 있습니다. 당연하게도 이 방법을 응용하면 여러 줄로 이루어진 문자열도 깔끔하게 선언할 수 있습니다. (를 이용한 방식을 봅시다. 뒤에 "\n"을 붙여주었습니다..
python의 datetime에는 now 함수가 있습니다. 간단하게 알아보도록 하겠습니다. datetime의 now는 현재 시간을 출력해 줍니다. v.utcoffset으로 utc로부터 몇 시간 빠른지에 대한 정보를 출력합니다. 그리고, 현재 시간을 출력해 보겠습니다. 1번째 결과는 None이 나옵니다. 이는 utc로부터 몇 시간이 앞서있는지에 대한 정보가 없다는 것을 의미합니다. 다음에 현재 시간을 출력하였습니다. 3월 3일 23시 22분 47초라고 나오는군요. 여기서 문제. 어느 지역에서의 시간일까요? 도쿄? 오사카? 아니면 테헤란? 서울? 사실 저는 서울 시간대에 살고 있기 때문에, 단번에 서울 시간이라고 생각하실 수 있습니다. 그러면 이건 어떨까요? 현재 시간을 출력해 보니 3월 3일 17시 54분..
안녕하세요. 이번 시간에는 datetime.datetime에 있는 astimezone 함수에 대해서 알아봅시다. 현재 제 컴퓨터의 표준 시간대는 UTC +09:00 서울입니다. utc 시간대보다 9시간 빠르다는 의미입니다. datetime.strptime은 문자열을 datetime.datetime으로 바꿔줍니다. 4번째 줄에서 v.tzinfo를 출력합니다. 다음에, pytz의 timezone을 이용해서 타임존을 "America/New_York"으로 바꿔주는데요. 여기서 중요한 것은, UTC 시간은 같지만, 로컬 시간에 맞춰서 변경됩니다. 이게 무슨 소리인가? 기준 시간은 같지만 로컬 시간이 다르다는 의미입니다. utc 시간은 같지만, 이를 지역 시간에 맞춰 출력한다는 이야기입니다. 출력 결과를 보면서 이..
최근댓글