본문 바로가기
SK shieldus Rookies 16기

[SK shieldus Rookies 16기] 클라우드 기반 스마트 융합 보안 과정 교육 정리(4일차)

by Challenge programmers 2023. 10. 26.

오늘 학습 주제

1. 파일과  디렉토리 다루기

2. 파일 정리하기

3. 예외 처리, 디버깅

4. 클래스: 객체지향 프로그래밍(OOP)

 

 

 

 

파일과 디렉토리 다루기


리눅스 & 맥에서 경로는 /

윈도우에서는 \\

 

OS(Operating System)모듈 사용

 

코드 설명
path.join() 폴더이름과 파일이름을 합친 후 리턴
getcwd() 현재 작업하고 있는 디렉토리의 경로를 리턴
path.basename() 지정된 경로의 파일명을 리턴
path.dirname() 지정된 경로에서 파일명을 제외한 것을 리턴
makedirs() 여러 개의 폴더를 생성
chdir() 지정된 경로로 위치 변경

join()으로 경로 설정하기
getcwd()를 이용하여 현재 디렉토리를 문자열로 리턴
basename()로 파일이름을 dirname()는 경로를 리턴
makedirs()를 이용하여 폴더를 생성하고 chdir()을 이용하여 지정된 경로로 이동

절대 경로 : 항상 root 폴더에서 시작되는 경로

(ex. C:\\local\\windows)

상대 경로 : 현재 작업 폴더를 중심으로 시작하는 경로

(ex. .folder\test\file.py)

 

파일 읽고 쓰기

코드 설명
open(filename, mode) 지정된 파일을 filemode에 맞춰 리턴
read() 파일의 내용 전체를 문자열로 리턴
write() 파일에 내용을 수정하거나 추가
close() 파일을 닫는다

FileMode

FileMode 설명
"r" read를 의미하며 읽기 전용으로 파일을 읽어올 때 사용한다
"w" write를 의미하며 파일을 수정할 때 사용한다 파일이 존재하지 않을 경우 새로 생성한다
"a" append를 의하며 파일에 내용을 추가할 때 사용한다 추가되는 위치는 파일의 뒷부분이다
"x" create를 의미하며 파일을 생성한다 파일이 존재하면 에러가 리턴된다

 

open()으로 'hello.txt'파일을 쓰기 모드('w')로 읽어와 내용을 추가한 뒤 파일을 닫는다
읽기 전용 모드('r')로 파일을 읽어와 내용을 출력
readlines() 함수로 한줄씩 리턴한다
readline()함수로 한줄씩 리턴하며 라인이 없을 경우 break을 통해 루프를 끝낸다
with를 사용하여 리소스를 자동으로 할당하고 해제

shutil모듈

파일을 이동하거나 복사할 때 사용

코드 설명
copy(FileName, TargetName) 파일(FileName)을 지정한 폴더(TargetName)로 복사 
copytree(FolderName, TargetName) 폴더(foldername)를 지정한 폴더(TargetName)로 복사
move (FolderName, TargetName) 폴더(foldername)를 지정한 폴더(TargetName)로 이동

 

pickle 모듈

텍스트 상태의 데이터가 아닌 파이썬 객체 자체를 파일로 저장

리스트나 클래스를 파일에 저장 할 때 사용

코드 설명
dump(Object, File) Object를 File로 저장
load(File) File를 리턴

Object colors를 pickle.dat으로 저장 이때 FileMode에서 'wb'는 바이너리(b)로 사용(w)하는 FileMode이다
pickle.dat을 읽기전용(r)바이너리(b)로 리턴

 

 

 

 

파일 정리하기


os.walk(path): 디렉토리 내에 경로, 파일을 모두 순회하여 리턴

os.walk()으로 지정한 폴더 내에 있는 파일을 모두 리턴

zipfile 모듈

ZIP 파일을 읽고 쓸 때 사용

코드 설명
zipfile(File, Mode, Compression) Mode와 Compression에 맞춰 압축 파일을 생성
extract(FileName) 지정한 파일만 압축 풀기
extractall() 모든 파일을 압축 해제
write() 압축 파일 내부에 지정한 파일 생성

ZipFile()을 이용하여 zero.zip 파일 리턴
extractall()을 이용해 zero.zip 파일 안 모든 내용을 압축 해제
write()를 이용하여 new.zip파일 안에 내용을 지우고 현재 경로에 있는 모든 파일 새로 만들기 (w=내용물 지우고 새로만들기, a=추가)

 

 

 

 

예외 처리, 디버깅


- 예외 처리 -

프로그램의 비정상적인 종료를 막는 방법

try / except를 이용하여 발생하는 에러에 대한 출력물 입력
try / except를 이용하여 에러 코드를 리턴

- 디버깅 -

컴퓨터 프로그램 개발 과정에서 버그나 오류를 찾아내고 수정하는 작업

 

 

 

클래스(Class): 객체지향 프로그래밍(OOP)


- OOP(Object Oriented Programming) -

소프트웨어 개발 방법론 중 하나로, 프로그램을 객체들의 집합으로 모델링하고

이들 객체간의 상호작용을 통해 프로그램을 설계하는 방법

코드의 재사용성, 유지보수, 확장성을 높임

현실 세계의 다양한 개념(인간, 포유류 등)과 관계를 프로그램에 반영하기에 용이함

프로그램은 모두 객체로 분해되어 설계되고, 객체 간 서로 상호작용을 통해 수행됨

이름과 성별, 주소로 사람을 생성
입력된 value로 class 안의 name을 지정해 리턴

 

생성자(__init__) : 객체가 생성될 때 자동으로 실행, 생성시 필요한 코드를 포함

self: 생성자의 파라미터로 사용, 생성된 객체의 멤버를 접근할 때 사용

 

생성자(__init__)를 통해 동물을 구현하고  self파라미터로 객체 지정
set_name()으로 dog를 이름으로 지정
__NAME은 클래스 내부에 포함된 변수로 '클래스 변수'라고 한다 클래스 변수는 클래스로 만든 모든 객체에 공유가 된다
ShoppingCart()를 구현한 클래스
'a'와 'b'의 쇼핑카트 객체를 생성하였다
'a' 카트와 'b' 카트에 add_item() 메서드로 각각 물건을 추가
각 객체가 저장한 정보를 출력하여 확인

- 상속(ingeritance) -

 객체 재사용의 한 방법, 다른 방법으로는 포함(composition)이 있다

부모 클래스의 모든 속성(데이터, 메서드)를 자식 클래스에 물려 줄 수 있다

부모 클래스(Person)로부터 모든 속성을 물려 받은 자식 클래스(Student) 생성
부모 클래스(Person)의 속성을 물려받은 결과가 나온다

- Override -

부모 클래스에 있는 메서드를 동일한 이름으로 다시 만드는 것

상속받은 메서드의 변수, 기능, 구조 등을 자식 클래스가 목적에 맞게 변경하여 사용 가능

자식클래스(CEO)가 부모 클래스(Employee)로부터 상속받은 greet()를 Override하여 재정의
상속받은 같은 greet이지만 Override로 인해 결과는 다르다

 

 

- 참고 -

https://wikidocs.net/26

https://wikidocs.net/149330

https://wikidocs.net/774#google_vignette

https://wikidocs.net/28

https://fhaktj8-18.tistory.com/entry/overriding-vs-overloading