2017-05-18 5 views
-1

큰 .SET 파일이있어 타사 소프트웨어의 경계 및 해결사 설정을 제공합니다. 파일은 시뮬레이션 중에 주어진 설정에 따라 매개 변수의 크기와 위치를 변경합니다. 그것에는 100 개의 매개 변수가 있습니다.Python 사전의 거대한 설정 파일

은 전형적인 설정 파일은 다음과 같다 :

(rp (
(wall-film/model-parameters ((solve-wallfilm? . #t) (solve-momentum? . #f) 
(solve-energy? . #t) (solve-scalar? . #f) (solve-vapor? . 2) (dpm- 
collection? . #f) (mom-gravity? . #t) (mom-aero-drive? . #t) (mom-wall-visc? 
. #t) (mom-pressure? . #f) (mom-spreading? . #f) (ewf-adaptive? . #f) (time- 
scheme . 0) (mass-scheme . 0) (mom-scheme . 0) (energy-scheme . 0) (scalar- 
scheme . 0) (reconstruct-limiter . 0) (thickness-limit . 1e-05) (thickness- 
realistic . 0.) (courant-number . 0.2) (adapt-init-dt . 0.0001) (timestep- 
max . 0.01) (sub-time-steps . 10) (sub-iter-nums . 10)) 

내가 파일을 읽고 모든 매개 변수에 대한 아래와 같은 사전 생성하는 함수를 만들 싶습니다

A = {'solve-wallfilm':'t','solve momentum':'t','solve-energy':'t'} 

을 어느 미래에 두 개의 다른 설정 파일을 비교하는 데 도움이 될 것입니다.

파이썬으로 어떻게 할 수 있을까요? 또는 설정 파일을 규칙적인 형식으로 저장하기 위해 어떤 라이브러리를 사용해야합니까? 사전에

덕분에

+1

그냥 읽어 오픈 브라켓에 의해 분할, 파일을 연 다음에 의해 사전을 추가 각각을 한 점씩 나누고 dict [split [0]] = split [1] [: - 1] – pointerless

답변

2

뭔가

같은
def settingtodict(filepath): 
    d = {} 
    with open(filepath,'r') as f: 
     for line in f: 
      a = line.split("(") 
      for each in a: 
       print(each) 
       if '.' in each: 
        d[each.split('.')[0]]=each.split('.')[1][1:-2] 
    return d 

작업 한 모든 것을 한 줄에 같이

+0

만들기 문제는 설정 파일의 형식이 예를 들어서 바뀌고 또한 사전 : (종/의사주기 유형 (3 3)) (종/의사 시간 스케일 인자 (1.(species/pseudo-implicit-relax (1. 1.)) (종/의사 특정? (#f #f)) (종/의사 휴식 (0.75 0.75)) (dpm/sources-every-flow-iteration? #t) (dpm/비정상 추적? #t) (amg/conservative-amg-coarsening? #t) (pdf/dynamic-fvar? #f) (오메가// 0.699999988079071) (터빈 점도/릴랙스 0.8999999761581421) – Bow

+0

다음은 각 문자에 char 문자가있는 경우를 사용하는 것이 가장 좋습니다. – pointerless

+1

으로 처리되고 있습니다. 예를 들어 – pointerless