본문 바로가기
Python/Python_basic

[Python] 디렉토리 생성 및 텍스트 파일 작성/저장

by Mr.DonyStark 2023. 11. 3.

□ import os : 모듈함수

 ○ os.path.exists(경로) : 경로 확인

 ○ os.makedirs(경로) : 경로에 디렉토리 생성

with open 함수를 사용하면 자동으로 close 처리가됨

 ○ w : writing 덮어쓰기

   - write : 리스트 인덱스별 값만 작성

   - writelines : 리스트의 모든 값을 한줄로 작성

   *아래 예제코드 기준으로 말하는 것임
 ○ a : appending 추가
 ○ r : read 조회

#예제 : /source/26-1/경로에 name = 파일명 contents = 내용으로 파일을 작성하시오
import os

file_grp = ['A','B','C','D','F','G']
contents_list = ['Python','JavaScript','PHP','Rust','Solidity','Assembly'] 
contents_list2 = [['Python','JavaScript','PHP','Rust','Solidity','Assembly'],
                 ['Python','JavaScript','PHP','Rust','Solidity','Assembly'],
                 ['Python','JavaScript','PHP','Rust','Solidity','Assembly'],
                 ['Python','JavaScript','PHP','Rust','Solidity','Assembly'],
                 ['Python','JavaScript','PHP','Rust','Solidity','Assembly'],
                 ['Python','JavaScript','PHP','Rust','Solidity','Assembly']] 

#방법1
def write_method_first(filepath):
    if not os.path.exists(filepath):      # .path 함수     :   운영체제에 해당 경로가 있는지여부. not을 사용했기에 없다면~으로 해석
        os.makedirs(filepath)              # .makedirs 함수 :  : 폴더 생성하기
        
    # loop write
    for n, c in zip(file_grp, contents_list):
        with open(filepath + n + '.txt','w') as file:    #파일지정
            file.write(c)

print(f'write_method_first 결과 : {write_method_first("C:/Users/User/Downloads/python_basic_1.5/2.QnA/source/26-1/")}')

#방법2
def write_method_second(filepath):
    if not os.path.exists(filepath):      # .path 함수     :   운영체제에 해당 경로가 있는지여부. not을 사용했기에 없다면~으로 해석
        os.makedirs(filepath)              # .makedirs 함수 :  : 폴더 생성하기
        
    # loop write
    for n, c in zip(file_grp, contents_list2):
        with open(filepath + n + '.txt','w') as file:    #파일지정
            file.writelines(c)            #.writelines() : 문자열로 이루어진 리스트의 모든 줄을 텍스트 파일로 쓰기

print(f'write_method_second 결과 : {write_method_second("C:/Users/User/Downloads/python_basic_1.5/2.QnA/source/26-2/")}')