본문 바로가기

오늘도 하나씩, 쉽게 풀어봅니다.

작은 시행착오도,
다음에 꺼내 볼 수 있는 기록으로.

전체 글 117

Git stash 뒤 새 파일이 남을 때: -u로 함께 보관하고 복원 확인하기

git stash를 했는데 새로 만든 draft.txt가 그대로 남았다면, 그 파일이 아직 추적되지 않는지 확인하세요. 기본 stash에 포함되지 않은 새 파일도 함께 임시 보관하려면 git stash push -u를 사용할 수 있습니다. 다만 보관 뒤 파일이 작업 폴더에서 사라지는 동작까지 이해하고 실행해야 합니다.Windows의 Git 2.52.0.windows.1에서 새 임시 저장소 두 개로 기본 push와 -u를 각각 실행해 결과를 확인했습니다. 기존 프로젝트의 stash를 지우거나 원격으로 보내는 실습이 아닙니다. 도해는 직접 실행한 파일 상태를 풀어 그린 설명 자료입니다.1. 기존 수정 파일과 새 파일을 따로 준비PowerShell에서 git --version이 실행되는지 확인합니다. 아래 코..

Python deque maxlen: append는 버리고 insert는 오류가 나는 이유

collections.deque에 maxlen을 주면 정해진 개수를 넘겨 append할 때 반대쪽 항목이 빠집니다. 같은 용량 제한이라도 insert는 자동으로 하나를 버리는 대신 IndexError가 날 수 있습니다. 최근 기록 보관과 반드시 보존해야 하는 작업 대기열을 구분하세요.Windows CPython 3.14.0에서 아래 코드를 한 파일로 실제 실행했습니다. 표준 라이브러리만 사용합니다. 새 연습 폴더에 코드를 저장하고 PowerShell에서 해당 폴더로 이동한 뒤 python --version과 python 파일이름.py를 실행하세요. >>>가 보이면 Python 대화형 창이므로 quit()로 나온 뒤 터미널에서 실행합니다. 그림은 실행 결과를 설명하는 직접 제작 도해이며 실제 프로그램 화면..

Python groupby: 같은 값이 여러 그룹으로 나뉘는 이유

itertools.groupby는 같은 값 전부를 모으는 함수가 아니라, 같은 키가 연속하는 구간을 나눕니다. A가 뒤에서 다시 나오면 새 A그룹이 생깁니다. SQL GROUP BY처럼 순서와 무관하게 합산할 것인지, 연속 상태의 구간을 셀 것인지 먼저 구분하세요.Windows CPython 3.14.0에서 아래 코드를 한 파일로 실제 실행했습니다. 표준 라이브러리만 사용합니다. 새 연습 폴더에 코드를 저장하고 PowerShell에서 해당 폴더로 이동한 뒤 python --version과 python 파일이름.py를 실행하세요. >>>가 보이면 Python 대화형 창이므로 quit()로 나온 뒤 터미널에서 실행합니다. 그림은 실행 결과를 설명하는 직접 제작 도해이며 실제 프로그램 화면 캡처가 아닙니다.예..

Python lstrip이 글자까지 지울 때: removeprefix로 접두사만 제거하기

문자열 앞의 pre_만 떼고 싶은데 lstrip("pre_")가 report의 일부까지 지웠다면, removeprefix("pre_")를 확인하세요. lstrip의 인자는 통째로 지울 접두사가 아니라, 왼쪽에서 연속으로 제거할 문자들의 모음입니다.Python 3.14.0에서 아래 결과를 직접 확인했습니다. removeprefix는 Python 3.9 이상에서 사용할 수 있습니다. 문자열 이름만 다루는 실습이므로 실제 파일 이름이나 디스크 내용은 바뀌지 않습니다. 도해는 실제 실행 결과를 해설한 그림입니다.1. 같은 입력에 세 가지 방법을 비교Python 대화형 창의 >>> 위치에 입력합니다. PowerShell의 PS 위치에서 실행하는 코드가 아닙니다. >>> 표시는 입력하지 않고 아래 준비 줄부터 같은..

Git add 취소하기: 파일 내용은 남기고 스테이징만 빼는 방법

git add를 취소하되 방금 고친 파일 내용은 남기려면 git restore --staged -- note.txt처럼 스테이징 영역만 되돌립니다. 옵션 없이 git restore note.txt를 실행하는 것은 작업 파일을 바꾸는 다른 작업입니다. 두 명령을 바꿔 쓰지 마세요.아래는 Windows PowerShell과 Git 2.52.0.windows.1에서, 새 임시 저장소의 한 파일로 재현한 예제입니다. 기존 프로젝트 대신 연습 폴더에서 먼저 확인합니다. 그림은 실행 로그를 설명하는 도해이며 실제 프로그램 화면이 아닙니다.1. 어디서 실행하는지와 보존할 파일부터 확인PowerShell을 열고 git --version으로 설치를 확인합니다. Git 2.23부터 restore가 제공됩니다. 프로젝트에서..

Python dict.get 기본값이 적용되지 않을 때: 키 없음·None·0을 나누어 보세요

딕셔너리에서 config.get('timeout', 30)을 썼는데 None이 나올 수 있습니다. get의 기본값은 키가 없을 때 사용하기 때문입니다. 키가 있고 그 값이 None이라면 저장된 None을 그대로 반환합니다. 0과 False도 키가 존재하면 유지됩니다.이 차이는 재시도 횟수 0, 기능 끄기 False처럼 ‘비어 보이지만 유효한 값’을 다룰 때 중요합니다. Windows Python 3.14.0에서 아래 딕셔너리 예제를 직접 실행했습니다. 파일이나 실제 서비스 설정은 변경하지 않습니다.그림은 위에서부터 delay 키 없음, timeout 값 None, retries 값 0을 비교합니다. 그림에서는 세 행 모두 기본값 30을 사용했습니다. 아래 실행 예제에서는 retries와 delay의 기본..

Python sort 결과가 None일 때: sorted와 원본 리스트 변경을 구분하세요

정렬한 결과를 저장했는데 None이 나왔다면 result = scores.sort()처럼 작성했는지 확인하세요. list.sort()는 원래 리스트의 순서를 바꾸고 None을 반환합니다. 원본을 남기면서 정렬된 새 리스트가 필요하면 sorted()를 사용합니다.아래는 Windows Python 3.14.0에서 직접 실행한 예제입니다. 파일을 읽거나 기존 데이터를 지우지 않고 작은 숫자 리스트만 바꿉니다. 도해는 실제 실행 결과를 설명하도록 편집한 그림이며 프로그램 화면 캡처가 아닙니다.위 그림에서 sort의 화살표는 원래 리스트로 돌아옵니다. sorted의 화살표는 새 결과 리스트로 이어집니다. 두 함수 이름보다 ‘원래 순서가 필요한가’를 먼저 생각하면 선택하기 쉽습니다.1. Python 입력 위치와 첫..

Python heappushpop·heapreplace 차이: 넣은 값이 힙에 남지 않는 이유

heappushpop과 heapreplace는 모두 힙에서 값 하나를 반환하지만 순서가 다릅니다. 새로 넣을 값이 현재 최소값보다 작을 때 차이가 또렷합니다. 작은 값3을 넣어도 결과 힙에3이 남지 않는 이유를 같은 입력으로 비교합니다.실행 준비Windows CPython 3.14.0에서 아래 heapq_demo.py를 실제 실행했습니다. 새 폴더에 코드를 저장하고 PowerShell에서 python --version, python heapq_demo.py를 입력하세요. 표준 라이브러리 heapq를 쓰며, 여기서는 최소 힙 기능만 사용합니다. 목록의 첫 항목이 최소값이라는 조건과 목록 전체가 정렬됐다는 조건을 구분합니다.예시 1. heapify는 원본 목록을 바꾼다[8,3,5]에 heapify를 실행하면..

Python bisect_left·right: 삽입 위치와 실제 값 찾기를 구분하세요

bisect는 정렬된 목록에서 값을 넣을 경계를 구합니다. 반환된 번호가 있다고 해서 그 값이 실제로 들어 있다는 뜻은 아닙니다. 중복 값의 왼쪽·오른쪽 경계와 존재 검사를 나눠야 마지막 위치에서 IndexError가 나는 일을 막을 수 있습니다.실행 준비Windows CPython 3.14.0에서 아래 코드를 한 파일로 실행했습니다. 표준 라이브러리만 사용합니다. 새 작업 폴더에 bisect_demo.py로 저장하고 PowerShell에서 해당 폴더로 이동한 뒤 python --version과 python bisect_demo.py를 실행하세요. >>>가 보이면 Python 대화형 창이므로 quit()로 나온 뒤 터미널에서 명령을 입력합니다.예시 1. 중복된 70의 시작과 끝 찾기scores는 [60,..

Python pathlib 확장자 바꾸기: suffix·suffixes·stem과 실제 이름 변경의 차이

archive.tar.gz의 stem은 archive가 아니라 archive.tar입니다. pathlib의 suffix는 마지막 확장자 하나, suffixes는 점으로 나뉜 확장자 목록을 보여 줍니다. 이름 문자열을 다루는 것과 디스크의 파일을 바꾸는 것도 구분해야 합니다.Python 3.12.8에서 PureWindowsPath로 실제 파일을 만들지 않고 아래 예제를 실행했습니다. 파일 이동·이름 변경 명령은 실행하지 않습니다. 이 글의 결과는 이 버전 기준이며, Python 3.14 이후 일부 끝점 처리 변경과 혼동하지 않도록 끝에 점만 있는 이름은 예제에서 제외했습니다.1. Python 입력 위치부터 맞추기시작 메뉴나 기존 터미널에서 사용하려는 Python을 실행해 >>> 입력 위치를 엽니다. 아래 ..

728x90
반응형
SMALL
728x90
반응형
LIST