22장: 기타 유용한 파이썬 모듈

파이썬은 다양한 작업을 쉽게 처리할 수 있도록 도와주는 풍부한 모듈과 라이브러리를 제공합니다. 이 장에서는 파일 압축, 날짜와 시간 처리, JSON 데이터 처리, 난수 생성, 그리고 웹 스크래핑과 같은 다양한 작업을 수행할 수 있는 유용한 파이썬 모듈을 소개합니다.


#### 22.1 파일 압축


파이썬에서는 `zipfile`과 `tarfile` 모듈을 사용하여 파일 압축과 압축 해제를 수행할 수 있습니다.


##### 22.1.1 `zipfile` 모듈


`zipfile` 모듈을 사용하여 ZIP 파일을 생성하고, 압축을 해제할 수 있습니다.


```python

import zipfile


# 파일 압축

with zipfile.ZipFile('example.zip', 'w') as zipf:

    zipf.write('file1.txt')

    zipf.write('file2.txt')


# 파일 압축 해제

with zipfile.ZipFile('example.zip', 'r') as zipf:

    zipf.extractall('extracted')

```


##### 22.1.2 `tarfile` 모듈


`tarfile` 모듈을 사용하여 TAR 파일을 생성하고, 압축을 해제할 수 있습니다.


```python

import tarfile


# 파일 압축

with tarfile.open('example.tar.gz', 'w:gz') as tar:

    tar.add('file1.txt')

    tar.add('file2.txt')


# 파일 압축 해제

with tarfile.open('example.tar.gz', 'r:gz') as tar:

    tar.extractall('extracted')

```


#### 22.2 날짜와 시간 처리


파이썬에서는 `datetime` 모듈을 사용하여 날짜와 시간을 처리할 수 있습니다.


```python

from datetime import datetime, timedelta


# 현재 날짜와 시간

now = datetime.now()

print(f"현재 날짜와 시간: {now}")


# 날짜와 시간 포맷팅

formatted = now.strftime('%Y-%m-%d %H:%M:%S')

print(f"포맷팅된 날짜와 시간: {formatted}")


# 문자열을 날짜로 변환

date_str = '2023-05-30 14:35:00'

date_obj = datetime.strptime(date_str, '%Y-%m-%d %H:%M:%S')

print(f"변환된 날짜 객체: {date_obj}")


# 날짜 계산

future_date = now + timedelta(days=5)

print(f"5일 후의 날짜: {future_date}")

```


#### 22.3 JSON 데이터 처리


파이썬의 `json` 모듈을 사용하여 JSON 데이터를 쉽게 처리할 수 있습니다.


```python

import json


# JSON 문자열을 파이썬 객체로 변환

json_str = '{"name": "Alice", "age": 30, "city": "New York"}'

data = json.loads(json_str)

print(data)


# 파이썬 객체를 JSON 문자열로 변환

python_obj = {'name': 'Bob', 'age': 25, 'city': 'Los Angeles'}

json_str = json.dumps(python_obj)

print(json_str)


# JSON 파일 읽기

with open('data.json', 'r') as file:

    data = json.load(file)

    print(data)


# JSON 파일 쓰기

with open('data.json', 'w') as file:

    json.dump(python_obj, file)

```


#### 22.4 난수 생성


파이썬의 `random` 모듈을 사용하여 난수를 생성할 수 있습니다.


```python

import random


# 정수 난수 생성

rand_int = random.randint(1, 100)

print(f"정수 난수: {rand_int}")


# 실수 난수 생성

rand_float = random.uniform(1.0, 10.0)

print(f"실수 난수: {rand_float}")


# 리스트에서 임의의 요소 선택

choices = ['apple', 'banana', 'cherry']

rand_choice = random.choice(choices)

print(f"임의의 선택: {rand_choice}")


# 리스트를 임의로 섞기

random.shuffle(choices)

print(f"섞인 리스트: {choices}")

```


#### 22.5 웹 스크래핑


파이썬의 `beautifulsoup4`와 `requests` 모듈을 사용하여 웹 스크래핑을 할 수 있습니다. 먼저 두 모듈을 설치해야 합니다.


```sh

pip install beautifulsoup4 requests

```


##### 22.5.1 웹 스크래핑 예제


다음은 `BeautifulSoup`과 `requests`를 사용하여 웹 페이지에서 데이터를 추출하는 예제입니다.


```python

import requests

from bs4 import BeautifulSoup


# 웹 페이지 요청

url = 'https://example.com'

response = requests.get(url)


# BeautifulSoup 객체 생성

soup = BeautifulSoup(response.text, 'html.parser')


# 제목 태그 추출

title = soup.find('title').text

print(f"제목: {title}")


# 모든 링크 추출

links = soup.find_all('a')

for link in links:

    href = link.get('href')

    print(href)

```


이상으로, 파이썬의 다양한 유용한 모듈을 사용하는 방법에 대해 알아보았습니다. 다음 장에서는 기타 고급 주제에 대해 더 자세히 알아보겠습니다. 질문이나 요청사항이 있으시면 댓글로 남겨주세요!


---


이 글의 내용은 GoalKicker.com의 Python Notes for Professionals 책을 참조하였습니다.

댓글