Community

개발자 99% 커뮤니티에서 수다 떨어요!

← Go back
Assignment #09
#pragmatic
2년 전
631

연습 문제 11

여러분은 설정 파일에 YAML 형식을 사용했던 애플리케이션을 다시 쓰고 있다. 여러분의 회사가 JSON을 쓰기로 표준을 정했기 때문에 수많은 .yaml 파일을 .json 파일로 바꾸어야 한다. 디렉토리를 인자로 받아서 그 안의 .yaml 파일들을 각각 그에 해당하는 .json 파일로 바꾸는 스크립트를 작성하라. 예를 들어 database.yaml은 database.json이 되고, 파일의 내용은 JSON 문법을 따라야 한다.


간단하게 해결하기 위해서 Python과 라이브러리(yaml, json)의 파워를 빌려왔습니다.

1) path를 받아서 yaml 파일을 모두 가져옵니다.

def get_file_list_yaml(path):

return [file for file in os.listdir(path) if file.endswith(".yaml")]

2) yaml 파일을 json 파일로 변환해서 저장합니다.

def yaml_to_json(yaml_file, json_file):

with open(yaml_file, 'r') as yaml_in, open(json_file, 'w') as json_out:

yaml_object = yaml.safe_load(yaml_in)

json.dump(yaml_object, json_out)

3) python 실행 시 인자를 받아서 1)과 2)를 사용합니다.

if __name__ == '__main__':

file_list_yaml = get_file_list_yaml(sys.argv[1])

for file in file_list_yaml:

file_name, ext = os.path.splitext(file)

yaml_to_json(file, file_name+".json")

(안전하게 사용하려면) 예외처리는 조금 더 해야합니다.

전체 코드는 여기에서 확인할 수 있습니다.