mju-2023-2

<Python> oss-python-07

도멩 2023. 10. 16. 23:39

shutil 모듈 = 파일에 관한 고수준 연산 지원, 파일 복사 및 삭제에 관한 함수 제공

 

copy함수 = 매개변수 두개를 가짐, 앞에 오는 인자는 copy하는 대상 후에 오는 인자는 copy한 대상을 어떤 이름으로 저장할지 지정

만약 대상이 지정되지 않을 경우 오류 발생, 이름을 바꾸어 저장할 경우 이미 해당 파일명과 같은 파일이 있다면 overwriting된다.

copy함수는 원본의 메타데이터까지 복사하지 않음. 만약 메타데이터까지 복사를 원하는 경우 copy2함수 사용.

 

메타데이터 = 데이터를 위한 데이터

https://en.wikipedia.org/wiki/Metadata 참고


os 모듈 = 운영체제의 역할을 하는 모듈

mkdir함수 = 디렉터리를 만드는 함수, 인자로 이름을 지정하면 해당 이름의 디렉터리를 만든다. 만약 해당이름의 디렉터리가 이미 존재한다면 오류가 발생한다.


os모듈에서 제공하는 listdir 함수는 지정한 디렉터리의 모든 파일과 디렉터리를 리스트 형태로 return한다. 따라서 path를 인자로 받는다. 그래서 위 코드에서는 path값에 현재 디렉터리를 의미하는 '.'을 저장했다. 이후 리스트를 print한 값이다. 해당 디렉터리에는 위에서 실행한 예제들이 저장되어 있다.


첫번째 if문에서는 log라는 디렉터리가 있는지 파악한다. 만약 있다면 isdir true값을 반환한다.

따라서 if문 안에 not이 있기에 log라는 디렉터리가 없다면 mkdir함수가 실행되어서 log라는 이름의 디렉터리가 만들어진다.

두번째 if문에서는 해당 경로 안에 다음과 같은 이름의 파일이 있는지 확인한다. 만약 해당 파일이 있다면 true값을 반환한다. 따라서 해당 if문에는 not이 포함되므로 파일이 없는 경우 쓰기모드로 파일을 생성합니다. 이후 "기록시작\n"이라는 문장을 추가한다. 이후 열린 파일을 닫는다.

with as문은 블럭 내에 프로그램 종료 후에 프로그램 리소스를 자동으로 해제 시켜준다.

따라서 해당 파일을 추가 모드로 열고 10번 반복하는 반복문에서 각 반복문에서의 시간과 랜덤값을 얻은 것을 합한 문장을 파일에 추가한다.

다음 with as문은 읽기용으로 열어서 파일을 읽어서 text에 저장하고 띄어쓰기와 줄넘김을 기준으로 리스트를 만든다. 이후 문자의 개수, 단어의 개수, 문장의 개수를 출력한다.

 

참고: https://m.blog.naver.com/youndok/222050971499

https://blockdmask.tistory.com/454


파일의 이름과 찾을 문자를 입력받는다. 이후 with as 블럭에서 file_name에 해당하는 문서를 열어서 읽어서 text에 저장하고 모두 소문자로 바꾸어 준다. 이후 find함수를 사용한다.

find 함수는 찾을 문자열 혹은 문자의 index값을 반환한다. 그렇지 않다면 -1을 반환한다. 문자, 문자열 이후의 인자는 시작 index,  index를 지정할 수 있다. 이후 while문에서 파일이 끝날때까지 find를 하면서 pos + 1을 시작 index로 잡아서 찾을 때마다 count 값을 ++ 한다이후 count 값을 출력한다.


zipfile 모듈은 압축파일을 다루는 모듈이다. 위 코드에서는 compressZip이라는 함수를 정의하고 그 안에서 zip파일 쓰기모드를 실행해서 zipnamezip파일을 만들어준다. 이후 write 함수를 통해서 안에 압축할 파일을 쓴다.

filename을 입력받고 zipname filename + .zip으로 저장한다. 이후 위에서 정의한 함수를 사용한다.

참고: https://yganalyst.github.io/data_handling/memo_2/