OS: MAC
참고: 👉 점프 투 파이썬 - 라이브러리 예제 바로가기
059. 문자열을 파일처럼 다루려면? ― io.StringIO(아이오.스트링아이오)
✔ execute()는 “파일처럼 읽을 수 있는 객체”만 받으면 됨
✔ 문자열을 파일처럼 바꾸기 위해 StringIO 사용
✔ 그렇게 하면 파일 없이도 CSV 처리 가능
✔ 문제 조건(함수 수정 불가) 완전히 충족
| 구분 | 설명 | 예시 | 결과 |
| 모듈 | 문자열(String)을 파일처럼 읽고 쓰도록 만들어주는 가짜 파일 객체. | from io import StringIO | 문자열을 파일처럼 다룰 준비 완료 |
| 역할 | 실제 파일을 만들지 않고도 파일 입출력처럼 문자열을 처리할 수 있음. 테스트 코드, 임시 파일, 로그 버퍼 등에 많이 사용됨. |
from io import StringIO f = StringIO("hello") |
출력값 없음(정상) # 메모리에서 동작하는 파일 객체 생성 = 문자열을 파일처럼 바꾸기 |
| 쓰기 (write) |
보통의 파일처럼 .write() 사용. | from io import StringIO f = StringIO() f.write("Hello Sophia") |
12 # 내부 버퍼에 문자열이 저장됨 |
| 읽기 (read) |
.read() 또는 .readline() 로 내용 읽기 가능. |
from io import StringIO f = StringIO("ABC") print(f.read()) |
ABC |
| 커서 이동 (seek) | 파일처럼 커서가 있음. seek(0) 해야 처음부터 다시 읽음. |
① from io import StringIO f = StringIO() f.write("Hello") print(f.read()) ② from io import StringIO f = StringIO() f.write("Hello") f.seek(0) # 커서 처음으로 이동 print(f.read()) # 이제 처음부터 읽힘 |
① write 후 커서가 문장의 끝에 있기 때문에 아무것도 출력되지 않음 (read() 는 커서 위치부터 읽음 → 끝에서 읽을 게 없음 → 출력 없음.) ② Hello # 참고 ![]() |
| 전체 내용 가져오기 | .getvalue() 로 내부 문자열 전부 가져오기. 파일처럼 저장된 문자열 전체 반환 |
from io import StringIO f = StringIO() f.write("Hello Sophia!\n") f.write("Python StringIO test.") f.seek(0) text = f.getvalue() print(text) |
Hello Sophia! Python StringIO test. |
라이브러리 예제 문제:
다음은 CSV 파일을 읽어 각 줄의 첫 번째 숫자와 두 번째 숫자, 그리고 그 두 숫자를 더한 값을 추가하여 만든 리스트 배열을 반환하는 프로그램이다.
| import csv def execute(f): result = [] reader = csv.reader(f) for line in reader: one = int(line[0]) two = int(line[1]) three = one+two line.append(three) result.append(line) return result with open('src.csv', 'r', encoding='utf-8') as f: result = execute(f) # 함수실행 print(result) |
CSV 파일을 읽어 처리하는 execute() 함수를 실행하는 데 필요한 src.csv 파일 내용은 다음과 같다.


060. 명령행 옵션을 지정하여 실행하려면? ― argparse(아그파스)
★ 사용방식: IDLE3 셸→ 새 파일 → 코드 붙여넣기 → 저장 → 터미널에서 실행 ★
- 터미널에서 파라미터 받아서 동작하는 스크립트 만들 때
- 크롤러, 배치 작업, 자동화 스크립트 등
- CLI 옵션이 3개 이상 필요한 프로그램에서는 거의 필수(항상 파이썬 스크립트(.py) 형태로 실행)
| 구분 | 설명 | 예시 | 결과 |
| 모듈 | Python 실행할 때 명령행 옵션 (–-option) 을 쉽게 처리해주는 모듈 |
import argparse | CLI 프로그램에서 옵션을 쉽게 처리할 수 있음 |
| 역할 | 프로그램 실행 시 전달하는 옵션/인자를 받아서 자동으로 파싱하고, 도움말도 자동 생성 | parser = argparse.ArgumentParser() | CLI 인터페이스 자동 세팅 |
| 옵션 추가 | .add_argument() 로 옵션 이름과 타입, 기본값 등을 지정 | parser.add_argument("--name") | --name 옵션을 사용할 수 있게 됨 |
| 옵션 파싱 | .parse_args() 로 실제 전달된 옵션을 객체 형태로 가져옴 | args = parser.parse_args() | args.name, args.age 등으로 값 접근 가능 |
| 필수 옵션 | required=True 로 지정 | parser.add_argument("--age", required=True) | 옵션 미입력 시 에러 출력 |
| 기본값 | default= 로 설정 | parser.add_argument("--count", default=1) | 옵션 미입력 시 기본값 적용 |
| 타입 지정 | 옵션 값 자동 타입 변환 | parser.add_argument("--num", type=int) | 문자열이 아닌 정수(int)로 자동 변환 |
| 도움말 생성 | --help 옵션을 자동으로 만들어줌 | $ python3 app.py --help | 사용법/옵션 설명 자동 출력 |
| 기본예시 | 1. cli_test.py로 IDLE에서 파일 저장 2. 터미널에서 해당 파일이 위치한 경로로 이동 cd ~/Desktop 3. 터미널 python3 cli_test.py --name Sophia --age 30 입력 4. 출력값 Hello Sophia! You are 30 years old. |
#cli_test.py import argparse parser = argparse.ArgumentParser(description="argparse 연습 프로그램") parser.add_argument("--name", type=str, required=True, help="사용자 이름") parser.add_argument("--age", type=int, default=20, help="나이") args = parser.parse_args() print(f"Hello {args.name}! You are {args.age} years old.") |
라이브러리 예제 문제:

먼저 add_mul.py를 IDLE 셸에 작성하자

이제 터미널에서 입력해보자.

