2010-06-21 5 views
22

* .cfg (Python Buildout), * .xml (Gnome), * .json (Chrome 확장 프로그램), * .yaml (Google App Engine), * .ini 및 * .py 앱을 사용하는 사용자를 보았습니다. 구성 파일 (장고와 같은).다른 구성 형식에 대한 장단점은 무엇입니까?

제 질문은 : 왜 많은 다른 구성 파일 형식이 있습니까? 나는 xml 대 json 접근법 (훨씬 덜 장황하다)이나 파이썬 모듈 (때때로 파이썬 응용 프로그램을 가지고 있으며 설정 파일을 구문 분석하기 위해 특정 모듈을 사용하고 싶지는 않음)의 이점을 볼 수 있지만, 구혼?

제가 예시 한 구성 파일보다 더 많은 형식이 있다는 것을 알고 있습니다. 서로 비교할 때 실제로 어떤 이점이 있습니까? 역사적인 이유? 다른 시스템과의 호환성?

어떤 종류의 구성 파일 (플러그인 에코 시스템 포함)을 읽으려면 응용 프로그램을 시작 하시겠습니까?

내가 예로 든 것 중 가장 오래된 것이 무엇입니까? 그게 역사라는 걸 아십니까?

답변

12

주로 개인적인 취향, 목적 및 사용 가능한 라이브러리입니다. 개인적으로 필자는 XML이 설정 파일에 너무 장황하다고 생각하지만 대중적이며 훌륭한 라이브러리를 가지고 있습니다.

.cfg, .ini는 잘 작동하는 레거시 형식이며 많은 언어에는이를 읽는 라이브러리가 있습니다. 나는 그것을 Java, Python, C++에서 문제없이 사용했다. 데이터 교환 형식으로는 실제로 작동하지 않으며 데이터를 전달하는 경우 구성 및 데이터 교환에 동일한 형식을 사용할 것입니다.

yaml 및 json은 xml과 cfg/ini 사이에 있습니다. 두 가지 모두에서 많은 데이터 구조를 정의하거나 cfg와 같이 간단한 키 - 값이 될 수 있습니다. 이 두 형식 모두 파이썬에서 훌륭한 라이브러리를 가지고 있으며 많은 다른 언어에도 라이브러리가 있다고 가정합니다. 나는 json이 yaml의 부분 집합이라고 생각한다.

저는 파이썬 파일을 설정 파일로 사용한 적이 없지만 django에서는 잘 작동하는 것 같습니다. 유용 할 수도있는 코드를 구성에 포함시킬 수 있습니다.

마지막으로 yaml을 선택한 형식을 선택했습니다. 간단하지만 좋은 기능이 있습니다. 파이썬 라이브러리는 설치하기 쉽고 정말 좋습니다. Json은 가까운 두 번째 였고 yaml 라이브러리가 json을 파싱 한 이래로 나는 그 위에 yaml을 선택했습니다.

+0

귀하의 경험을 알고 싶어합니다. 감사! –

+3

JSON은 실제로 개체입니다. 구성 파일로 사용하는 것은 매우 잘못된 것처럼 보입니다. 그리고 주석을 적절하게 사용할 수있는 능력이 부족합니다. 당신은 항상 key : value를 생성 할 수 있습니다. – Anders

5

참고로, 이것은 내 의견에 대한 순수한 견해 및 추측이지만 과다한 형식에 대한 가장 큰 이유는 쉽게 사용할 수있는 무소속 구성 파일 구문 분석 라이브러리가 없기 때문일 수 있습니다. 대부분의 프로그램은 자신의 파서를 작성해야하기 때문에 구성 구조가 얼마나 복잡한 지 (계층 적 대 평면, 순전히 데이터 대 if 문과 같은 내장 논리 등) 균형을 유지하기 위해 종종 노력할 것입니다. 개발자가 얼마나 많은 노력을 기울 였는지 구성 파일 파서 작성에 많은 비용을 들이고 최종 사용자에게 얼마나 많은 고통을 주어야 하는지를 알고있었습니다. 그러나 아마 당신이 열거하고 생각할 수있는 모든 이유는 아마도 그들의 형식을 선택하는데 프로젝트 2의 동기 였을 것입니다.

내 프로젝트의 경우 .ini를 사용하는 경향이 있습니다. 파이썬에 이미 내장 된 우수한 파서가 있고 사용 사례의 대부분이 "충분 함"이었기 때문입니다. 몇 가지 경우에는 충분하지 않았습니다. 구현의 상대적 단순성 때문에 XML 기반의 구성 파일을 사용했습니다.

+0

"파이썬에 내장 된"파서는 무엇입니까? –

+1

@mattwilkie doc의 'configparser'입니다. https://docs.python.org/3/library/configparser.html –

관련 문제