파일 전송 과정에서는 암호화, 압축, 혹은 서로 다른 운영체제나 파일 리더 프로그램에서 처리해야 하는 등 다양한 이유로 파일을 인코딩하고 디코딩해야 하는 경우가 자주 발생합니다. Python의 uu 모듈은 이러한 작업을 손쉽게 처리할 수 있도록 인코딩과 디코딩 기능을 모두 제공합니다.파일 인코딩하기이번 예제에서는 아래 이미지를 인코딩한 뒤, 다시 디코딩하여 원본 이미지를 복원하는 과정을 살펴보겠습니다.아래 프로그램에서는 encode 함수를 사용하여 지정한 이미지 파일을 인코딩하고, 인코딩이 완료된 파일의 내용을 직접 읽어 확인합니다
xdrlib 모듈은 외부 데이터 표현(External Data Representation, XDR) 형식의 데이터를 인코딩하고 디코딩하기 위한 인코더와 디코더를 제공하는 파이썬 표준 라이브러리입니다. XDR이란 무엇인가? XDR은 서로 다른 시스템과 외부 소스 간에 데이터를 전송할 때 널리 사용되는 표준 데이터 직렬화 형식입니다. 이기종 환경에서 복잡한 데이터 구조를 만들고 전송하는 데 유용하며, OSI 7계층 모델의 표현 계층(Presentation Layer)에서 제공하는 서비스와 연관된 기술입니다. xdrlib를 활용한 데
파이썬에서 데이터를 처리한 결과를 출력할 때는 보기 좋은 형식으로 꾸미거나 수학적 정밀도를 맞춰야 하는 경우가 자주 있습니다. 이 글에서는 파이썬에서 결과물을 다양하게 출력할 수 있는 대표적인 옵션들을 예제와 함께 살펴보겠습니다.format() 함수 사용하기가장 널리 쓰이는 방법은 파이썬 내장 함수인 format()을 활용하는 것입니다. 중괄호 {}는 값이 채워질 자리표시자(placeholder) 역할을 하며, 기본적으로 format 함수에 전달된 값의 순서대로 차례차례 채워집니다. 또한 인덱스를 0부터 시작하는 위치 지정 방식을
Python 환경에서 Selenium WebDriver를 프록시(Proxy)와 함께 실행하면 지역화(Localization) 테스트 등 다양한 시나리오를 효과적으로 검증할 수 있습니다. 프록시는 특정 지역에서 웹사이트가 어떻게 표시되는지 확인해야 하는 테스트 환경에서 필수적인 구성 요소입니다. 예를 들어 이커머스 애플리케이션을 테스트할 때, 프록시를 통해 접속 지역에 따라 노출되는 언어와 통화가 사용자 위치에 맞게 올바르게 표시되는지 확인할 수 있습니다. 또한 웹사이트 UI가 사용자의 실제 위치와 일치하는지 검증하는 데에도 활용됩니
파이썬에서는 변수, 함수, 라이브러리, 모듈 등 다양한 이름(name)을 다룹니다. 그런데 사용하려는 변수의 이름이 이미 다른 변수나 함수, 메서드의 이름으로 존재할 가능성이 있습니다. 이런 이름 충돌을 피하려면 파이썬 프로그램이 수많은 이름을 어떻게 관리하는지 이해해야 하는데, 바로 이것이 네임스페이스(namespace)의 개념입니다. 네임스페이스의 세 가지 종류 지역 네임스페이스(Local Namespace): 함수 내부에서 선언된 변수와 함수의 이름들이 포함됩니다. 함수가 호출될 때 생성되며, 함수의 실행이 끝나면 함께 소
Python의 netrc 클래스는 Unix 시스템에서 사용자 홈 디렉터리에 위치한 .netrc 파일을 읽어오는 데 사용됩니다. 이 파일은 숨김 파일로, 사용자의 로그인 자격 증명(호스트별 계정 이름과 비밀번호)이 담겨 있으며, ftp나 curl 같은 네트워크 도구들이 별도의 입력 없이 자동으로 인증을 수행할 수 있도록 도와줍니다.netrc.authenticators() 메서드는 지정한 원격 호스트에 대한 인증 정보를 튜플 형태로 반환합니다. 반환되는 튜플은 순서대로 (로그인 이름, 계정 비밀번호, 사용자 비밀번호) 세 가지 값을 담
Python은 cx_Oracle이라는 전용 패키지를 통해 Oracle 데이터베이스에 손쉽게 연결할 수 있습니다. Oracle은 전 세계적으로 가장 널리 사용되는 관계형 데이터베이스 관리 시스템(RDBMS) 중 하나로, Python의 강력한 데이터 처리 기능과 결합하면 데이터 조회, 분석, 조작 작업을 매우 효율적으로 수행할 수 있습니다.이 글에서는 cx_Oracle 패키지를 설치하고, Oracle 데이터베이스에 연결한 뒤, SQL 쿼리를 실행하는 방법까지 단계별로 살펴보겠습니다.cx_Oracle 설치하기Oracle 데이터베이스와의
Python os.path 모듈이란? 파이썬의 os.path 모듈은 시스템의 다양한 위치에 있는 파일을 처리할 때 널리 사용되는 표준 라이브러리입니다. 경로 이름을 연결하거나 정규화하고, 원하는 정보를 추출하는 등 다양한 용도로 활용됩니다. 이 모듈의 함수들은 매개변수로 바이트(bytes) 또는 문자열(string) 객체만 허용하며, 실행 결과는 코드가 동작하는 운영체제(OS)에 따라 달라집니다. 1. os.path.basename – 경로의 마지막 요소 가져오기 basename() 함수는 경로에서 마지막 부분, 즉 폴더 이름 또
다형성(Polymorphism)은 여러 가지 형태를 의미하는 개념입니다. 파이썬에서는 동일한 연산자나 함수가 입력값에 따라 서로 다른 방식으로 동작하는 모습을 쉽게 찾아볼 수 있습니다. 또한 이름이 같은 메서드를 여러 클래스에 정의하면 코드 재사용성이 높아지고 복잡도도 크게 줄어듭니다. 다형성은 상속(Inheritance)과도 밀접한 관련이 있으며, 아래 예제들을 통해 그 원리를 자세히 살펴보겠습니다.1. 연산자(Operator)의 다형성+ 연산자는 두 개의 입력을 받지만, 입력값의 타입에 따라 전혀 다른 결과를 반환합니다. 정수끼
Pygorithm은 다양한 알고리즘의 구현체를 담고 있는 파이썬 교육용 모듈입니다. 이 모듈의 가장 큰 장점은 파이썬으로 작성된 알고리즘 소스 코드를 명령어 한 줄로 바로 확인할 수 있다는 점입니다. 또한 단순히 코드를 학습하는 것을 넘어, 실제 프로그래밍에서 주어진 데이터셋에 여러 알고리즘을 직접 적용하는 용도로도 활용할 수 있습니다.1. 모듈 설치하기Pygorithm은 pip 패키지 관리자를 이용해 간단하게 설치할 수 있습니다.pip install pygorithm2. 제공되는 자료구조 살펴보기모듈을 설치한 후에는 패키지 안에
리스트 데이터 분석에서 빈도 확인이 중요한 이유 리스트를 활용한 데이터 분석 과정에서는 특정 요소가 주어진 리스트에 최소 N번 이상 존재하는지 확인해야 하는 경우가 자주 발생합니다. 예를 들어 숫자 5가 리스트 안에 세 번 이상 등장했는지 판별하는 상황을 생각해 볼 수 있습니다. 이번 글에서는 이러한 조건을 검사하는 두 가지 방법을 예제 코드와 함께 살펴보겠습니다. 방법 1: 반복문으로 등장 횟수 직접 세기 가장 기본적인 접근 방식은 리스트를 순회하면서 목표 요소와 일치하는 항목의 개수를 직접 세는 것입니다. 일치하는 항목을 만날
파이썬으로 데이터를 분석하다 보면 두 개의 딕셔너리를 하나로 합쳐야 하는 상황에 자주 마주하게 됩니다. 특히 키가 동일한 요소끼리는 값을 서로 더하는 방식으로 병합해야 할 때가 있는데요. 이 글에서는 그런 경우에 사용할 수 있는 대표적인 두 가지 방법을 예제 코드와 함께 살펴보겠습니다.방법 1: for 루프와 | 연산자 활용첫 번째 방법은 for 루프를 사용해 두 딕셔너리에 같은 키가 존재하는지 확인하고, 존재한다면 해당 키의 값들을 더하는 방식입니다. 이후 파이썬 3.9부터 딕셔너리에 사용할 수 있는 |(병합) 연산자를 이용해 두
파이썬 딕셔너리는 키(key)와 값(value)의 쌍으로 데이터를 저장하는 핵심 자료구조입니다. 실무에서는 두 개 이상의 딕셔너리를 하나의 중첩 딕셔너리(nested dictionary)로 묶어야 하는 경우가 자주 발생합니다. 이 글에서는 여러 딕셔너리를 새로운 키와 함께 하나의 중첩 딕셔너리로 병합하는 두 가지 대표적인 방법을 예제 코드와 함께 소개합니다.방법 1: 새 키에 직접 할당하기가장 직관적인 방법은 빈 딕셔너리를 생성한 뒤, 병합할 각 딕셔너리를 원하는 새 키에 차례대로 할당하는 것입니다. 그러면 키가 지정된 중첩 딕셔너
중첩 리스트(nested list)가 주어졌을 때, 이를 트리(tree) 자료구조처럼 표현할 수 있는 딕셔너리로 변환해야 하는 경우가 있습니다. 예를 들어 [P, Z, X]와 같은 경로 정보를 계층형 구조로 만들고 싶다면, 각 요소를 부모-자식 관계로 연결된 딕셔너리로 재구성하면 됩니다.이 글에서는 중첩 리스트를 트리 형태의 딕셔너리로 변환하는 두 가지 방법을 소개합니다.방법 1: 슬라이싱(Slicing) 활용첫 번째 방법은 슬라이싱을 사용해 리스트의 요소 순서를 뒤집은 뒤, 각 요소를 순회하면서 트리에 추가하는 방식입니다. 이미
파이썬에서 일반적인 리스트는 요소가 차례대로 나열된 1차원(1D) 구조입니다. 반면 2차원(2D) 리스트는 외부 리스트 안에 리스트가 중첩되어 있는 형태를 의미합니다. 이 글에서는 주어진 1차원 리스트를 원하는 길이별로 잘라내어 2차원 리스트로 변환하는 방법을 소개합니다. 변환 시에는 각 하위 리스트에 포함될 요소 개수를 프로그램에 직접 지정해 줍니다. append와 인덱스를 활용한 방법 이 방식은 원하는 하위 리스트의 길이 정보(len_2d)를 순회하면서, 슬라이싱 시작 위치 역할을 하는 인덱스(idx)를 0부터 시작해 누적으로
Python으로 데이터 분석을 하다 보면 두 개의 리스트(list)를 하나로 병합해야 하는 상황이 자주 발생합니다. 하지만 각 리스트에 중복된 요소가 있을 경우 이를 어떻게 처리할지가 고민거리가 됩니다. 이 글에서는 첫 번째 리스트의 모든 요소(중복 포함)는 그대로 유지하고, 두 번째 리스트에서는 중복되지 않는 고유한 요소만 추가하는 방법을 소개합니다.방법 1: extend() 함수 사용하기가장 직관적인 방법은 첫 번째 리스트를 복사해 결과 리스트를 만든 뒤, 반복문(for loop)으로 두 번째 리스트의 각 요소가 결과 리스트에
Kivy는 멀티터치 앱과 같은 혁신적인 사용자 인터페이스를 활용하는 애플리케이션을 빠르게 개발할 수 있도록 지원하는 오픈 소스 Python 라이브러리입니다. 안드로이드 모바일 애플리케이션은 물론 데스크톱 애플리케이션 개발에도 널리 사용되고 있습니다. 이 글에서는 Kivy로 생성한 창(윈도우)에 레이블을 추가하는 방법을 단계별로 살펴보겠습니다.레이블 생성하기아래 예제에서는 kivy.uix.label 모듈에서 제공하는 Label 함수를 사용하여 창을 만들고, 원하는 텍스트가 담긴 커스텀 레이블을 화면에 표시합니다. 코드를 실행하면 지정
좌하단(bottom-left)과 우상단(top-right) 두 꼭짓점의 좌표로 표현되는 직사각형이 있다고 가정해 보겠습니다. 이때 주어진 점 (x, y)가 이 직사각형 내부에 존재하는지 판별해야 합니다.예를 들어 bottom_left = (1, 1), top_right = (8, 5), point = (5, 4)가 입력으로 주어지면, 점 (5, 4)는 직사각형 범위 안에 있으므로 출력 결과는 True가 됩니다.문제 해결 접근 방법이 문제는 간단한 좌표 비교만으로 해결할 수 있습니다. 다음 단계를 따릅니다.solve() 함수를 정의합
문제 개요 소수 n이 하나 주어졌을 때, 이 숫자를 두 소수 x와 y의 합(x + y) 형태로 표현할 수 있는지 확인하는 것이 목표입니다. 예를 들어 n = 19라면, 19 = 17 + 2처럼 두 소수의 합으로 나타낼 수 있으므로 결과는 True가 됩니다. 핵심 아이디어 n 자체가 소수이면서 2보다 크다면 n은 항상 홀수입니다. 그런데 홀수는 짝수 + 홀수의 조합으로만 만들 수 있기 때문에, 두 소수의 합이 되려면 둘 중 하나가 반드시 유일한 짝수 소수인 2여야 합니다. 따라서 모든 경우를 탐색할 필요 없이, n − 2가 소수인지
체스판 위에 퀸(Queen)과 상대 말(Opponent)의 위치를 나타내는 두 좌표가 있다고 가정해 봅시다. 각각 Q와 O로 표시하며, 이때 퀸이 상대 말을 공격할 수 있는지 판별하는 것이 목표입니다.체스 규칙에 따르면 퀸은 같은 행(가로), 같은 열(세로), 그리고 대각선 방향으로 이동하며 공격할 수 있습니다.예를 들어 입력이 Q = (1, 1), O = (4, 4)라면, 두 좌표는 같은 대각선상에 있으므로 출력은 True가 됩니다.문제 해결 접근 방식퀸이 상대 말을 공격할 수 있는 조건은 다음 세 가지 중 하나라도 만족하면 됩니