여러줄 문자열 사용시 따옴표를 3개사용 or \n시 줄바꿈
w모드 생성, x도 생성 다만 덮어쓰기 방지
a모드 수정
r 모드 열기

. 현재 디렉토리
../ 부모 디렉토리
텍스트 기본 인코딩은 os를 따르고 ms949로 저장되기 때문

한글은 utf-8

"""세번반복시 줄바꿈을 인식한다.

import os
def test_fwrite():
f=open('testa.txt', 'w', encoding='utf-8')
f.write(
"""hello world 안녕 ?! ★
줄바꿈 테스트입니다.
""")
f.write(
'\n혹은 이렇게 줄바꿈 하던가\n줄바꿈 테스트입니다.')
무한루프시 서비스가 다운될 가능성이 높아지나,
Python에서는 이 무한루프에 대해 종료 서비스를 가지고있다.
while(true):

whild문 실습

조건문 실습

w 모드 덮어쓰기 작성
while과 if을 사용해 간단 프로그램 만들기

x 모드 덮어쓰기가 불가능하다.
경로지정시 이스케이프문자를 \\ 두번씩 입력한다.


a 모드 append


os모듈
os.getlogin 사용자이름
os.getcwd 현재 경로
os.listdir 현재 모든 파일목록
os.mkdir 폴더생성
os.chdir 폴더이동

def test_osmodule():
system_user = os.getlogin() # 사용자 이름
print(system_user+'의 현재 위치는'+os.getcwd()+'입니다.') # 현재 위치
print(os.listdir()) # 현재 위치의 모든 파일 목록
work_dir = 'D:\\study\\sk_playdata\\study_ai\\python_workspace\\day4_python_fileio\\folder'
os.mkdir(work_dir) # 새로운 폴더 생성
os.chdir(work_dir) # 새로운 폴더로 이동
print(system_user+'의 현재 위치는'+os.getcwd()+'입니다.') # 현재 위치
print(os.listdir()) # 현재 위치의 모든 파일 목록
f = open('sample.txt', 'w', encoding='utf-8') # 새로운 파일 생성
f.write('새로운 파일을 작성하였습니다.')
f.close()
print(os.getcwd()+'에 새로운 파일이 저장되었습니다.')
read() 모두 읽기
readline() 한줄씩 읽기
readlines() 라인 리스트로 읽기

def test_r(r_mode):
f=open('testc.txt', 'r', encoding='utf-8')
if r_mode == 'r':
print(f.read())
elif r_mode == 'rl':
while True:
line = f.readline()
if not line:
break
print(line)
user_input = input('다음 라인을 읽으시겠습니까? (y/n)')
if user_input == 'y':
continue
else:
break
elif r_mode == 'rls':
print(f.readlines())
writelines()
리스트로 작성하기

파이썬의 기본 이비출력은 텍스트 파일이고 외의 자료형의 파일을 다룰때는 pickle 모듈을 활용함
pickle로 작성된경우 pickle로 읽는게 젤 마음편함
dat등의 확장자는 vscode에서 조회되지않음

노트패드 다운해 억지로열어봐도 깨질것임. 이진수이기때문.
https://notepad-plus-plus.org/downloads/
Downloads | Notepad++
notepad-plus-plus.org








다운완료.
dat 파일 열람가능


플러그인을 추가할 수 있지만 깨진 곳을 해석해줄뿐, 번역해주지는 않음




os.path.abspath(file) 파일경로찾기
os.path.exists(filepath) 파일존재확인
os.path.basename 파일이름만 추출
os.path.split() 폴더와 파일 모두 나누어 추출
os.path.splitdrive()[0] 드라이브명만 추출
os.path.splitdrive()[1] 확장자 제외하고 추출
os.path.dirname() 폴더위치 추출


사전자료, dictionay
list, tuple과 다르게 인덱스 사용할 수없지만 key, value를 사용할 수 있다 .
dict() 혹은 {}로 생성한다.

key와 value의 쌍으로,
여러 자료형을 묶어 사전을 만들 수 있다.

값추가시 없는 key를 활용해 추가하면 된다.
다만 '이미있는 key'에서의 추가를 헷갈리지말자.

keys(), values(), items()를 호출해 각각 출력할수 있다.

사전1.update(사전2)
사전과 사전은 합쳐질 수 있으나 겹칠경우, 대입되는(사전2)의 값이 (사전1에) 반영된다


pop() 키에 대한 아이템을 제거하고 반환함

clear() 딕셔너리 안을 모두 비움

copy() 딕셔너리 객체를 새로 만들어 아이템을 복사한다. deep copy

=
주소를 활용한 복사와 헷갈리지 않는다, shallow copy

키 in 사전
해당 키가 딕셔너리에 있는가를 확인 할 수 있음

value in 사전.values()
반대로 값으로 확인할 수 있다.

get.()을 활용하면 에러없이 값의 유무를 확인 할 수 있다.



del 아이템 제거

+
과제수행
5월 4일 과제 있습니다.
완성된 과제는 본인의 개인 Git 에 업로드 하시고,
git 의 프로젝트 소스 공유 url 을 강의실 실시간 채널에 url 만 제출해 주세요.
[파이썬 과제 1]
프로젝트명 : python_assignment1
프로젝트 구조 :
|- .venv
|- main.py
|- loop
|- while_mission.py
|- fileio
|- fileio_mission.py
실행 흐름 :
main start -> menu() 함수 실행 : while 루프로 프롬프트 반복
prompt = '''
*** 파이썬 과제 1 ***
1. while 실습문제
2. fileio 실습문제
9. 과제 실행 테스트 끝내기
'''
# while 문 실습문제 요구사항 ---------------------------------------------------------
# path : loop\\while_mission.py
# module : loop.while_mission
'''
함수명 : sungjuk_process()
prompt 변수를 while 문으로 반복해서 출력하면서, 입력되는 번호에 따라
sungjuk_list 의 아이템을 추가하거나 삭제하거나 출력되게 작성하시오.
sungjuk_list = [[12, '홍길동', 98], [15, '김유신', 87], [23, '황지니', 45]]
prompt = '''
*** 원하는 메뉴 번호를 선택하세요. ***
1. 추가
2. 삭제
3. 출력
4. 끝내기
'''
1 입력 : 리스트에 아이템 값들을 입력받아 추가함
번호 : 24 (sno : int)
이름 : 이순신 (sname : str)
점수 : 100 (score : int)
==> 리스트에 추가 처리함 ==> 새로운 학생정보가 추가되었습니다. 출력함
2 입력 : 리스트의 인덱스 위치의 아이템 제거함
현재 저장된 아이템의 갯수는 3개 입니다. 출력함
제거할 아이템의 순번 : 3 ==> 입력받은 인덱스 위치의 아이템 제거함
==> 3번 위치의 아이템이 제거되었습니다. 출력함 ==> 현재 저장된 아이템의 갯수는 2개 입니다. 출력함
==> 잘못된 인덱스 입력시 : '순번이 잘못 입력되었습니다. 확인하고 다시 입력하세요.' 출력함
3 입력 : 저장된 리스트 정보 아이템별로 출력함
0 : [12, '홍길동', 98]
1 : [15, '김유신', 87]
2 : .......
4 입력 : while 반복 종료함
성적관리 프로그램이 종료되었습니다. 출력함
'''
# ----------------------------------------------------------------------
# path : fileio\\fileio_mission.py
# module : fileio.fileio_misson
# 파일입출력, 반복문, 리스트, 딕셔너리 사용 실습문제 요구사항
'''
while 문을 사용해서 prompt 가 반복해서 출력되도록 함
입력된 번호에 따라서 emp_list 에 아이템 추가, 삭제, 출력 처리하도록 함
prompt = '''
*** 직원 정보 관리 서비스 ***
1. 새 직원정보 추가
2. 직원정보 삭제
3. 전체 출력
4. 파일에 저장
5. 파일로 부터 직원정보 읽어오기
9. 서비스 끝내기
'''
1 이 입력되면 리스트에 추가할 아이템 정보를 키보드로 입력받아서 추가함
사번 : 200 (empid : str)
이름 : 홍길순 (empname : str)
주민번호 : 851225-1234567 (empno : str)
이메일 : hong77@test.com (email : str)
전화번호 : 010-1234-5678 (phone : str)
급여 : 3800000 (salary : int)
직급 : 대리 (job : str)
부서 : 개발부 (dept : str)
=> 사번은 키로 해서 딕셔너리에 직원정보를 리스트로 저장함
사번 : [사번, 이름, 주민번호, 이메일, 전화번호, 급여, 직급, 부서]
2 입력시 :
삭제할 사번 : 200
=> 딕셔너리에서 해당 사번의 아이템 제거함
=> '200 번 사번의 직원 정보가 삭제되었습니다.' 출력함
3 입력시 :
딕셔너리의 각 아이템의 정보를 한줄씩 출력되게 함
사번 : [리스트 정보]
사번 : [리스트 정보]
....
4 입력시 :
딕셔너리 상태 그대로 파일에 저장되도록 함
저장할 파일명 : employees.dat
==> 'employees.dat 파일에 성공적으로 저장되었습니다.' 출력됨
5 입력시 :
읽을 파일명 : employees.dat
=> 파일의 내용을 읽어서 딕셔너리(emp_dict)에 저장하고 출력되게 함
9 입력시 :
while 문 끝내면서 프로그램 종료되게 함
=> 종료시 '직원 관리 프로그램을 종료합니다.' 출력함
함수명 : emp_process()
'''
python -m venv .venv
프로그램 종료


서비스 진입

추가 테스트

삭제 테스트

while 프로그램 종료

서비스 진입

데이터 입력

데이터 삭제

데이터 출력

데이터 저장

파일읽기
서비스 끝내기
서비스 끝내기

완료.
'Personal > SK 네트웍스 AI 캠프' 카테고리의 다른 글
| SK 네트웍스 AI 캠프 - 1_프로그래밍 데이터 기초 - Day6_파이썬 모듈과 패키지 (0) | 2026.05.07 |
|---|---|
| SK 네트웍스 AI 캠프 - 1_프로그래밍 데이터 기초 - Day5_파이썬_객체지향 프로그래밍_OOP (0) | 2026.05.06 |
| [SK네트웍스 Family AI 캠프] 32기 1주차 회고: Day1 ~ Day3 (0) | 2026.05.04 |
| SK 네트웍스 AI 캠프 - 1_프로그래밍 데이터 기초 - Day3_파이썬 함수 (0) | 2026.04.30 |
| SK 네트웍스 AI 캠프 - 1_프로그래밍 데이터 기초 - Day2_파이썬_기본문법 (0) | 2026.04.29 |