2016-11-18 2 views
0

example.py 이 스크립트는 다중 레벨 사전이있는 python 스크립트입니다.다른 파이썬 파일에있는 다중 레벨 사전을 업데이트하는 방법은 무엇입니까?

test_dict = {'path': '/home/user/user_name', 
'device1': {'IP': '10.10.10.10', 
      'password': 'pwd1', 
      'username': 'user1', 
      'name':'USER_DEFINED'}, 
'device2': {'IP': '11.11.11.11', 
      'password': 'pwd2', 
      'username': 'user2', 
      'name':'USER_DEFINED_TEST'} 
} 

나는 'example.py'에 사전 존재를 업데이트하기 위해 별도의 파이썬 스크립트를 작성했습니다. 현재, 옵션 구문 분석기를 통해 첫 번째 수준 사전 [예 : 경로 및 값]을 처리 할 수있었습니다. python example.py --key path --value /home/user/user_name. 이제는 다단계 사전 값 업데이트를 처리하기 위해 어떻게 최적화합니까? 저 좀 도와 주 시겠어요 ?

Working : 
    file_abs_path = "C://Test_Folder//example.py" 
    module = imp.load_source('test_dict', file_abs_path) 
    f_dict = module.test_dict 
    if f_key != "": 
     for key, value in f_dict.items(): 
     if key == f_key: 
      f_dict[f_key] = f_value 

parser.add_option("-k", "--key", dest="key",default="",help="") 

parser.add_option("-v", "--value", dest="value",default="",help="") 
f_key = options.key 
f_value = options.value 

장치 1 이름 & 1 디바이스 이름을 업데이트하거나 장치 1 설정 이름이 될 수 전혀합니다. 어떻게 최적화합니까?

+0

- 당신의 example.py 파일에서

는 데이터를 읽을이 조각을 사용 'example.py'에 파일을 만들고이 파일에 씁니다. [cPickle] (https://pymotw.com/2/pickle/)과 같은 것을 보셨습니까? – martianwars

+0

이것은 x-y 문제의 좋은 예입니다 :-). Python 파일에서 dict를 업데이트하는 방법을 궁금해 할 것입니다. 그러나 업데이트가 필요하다면 파이썬 파일에있는 것이 아니라 * data * 파일에 있어야합니다. 예를 들어 json 모듈은 사전을 다루는 데는 탁월한 반면 손으로 * 쉽게 편집 할 수있는 형식 (간단한 텍스트 편집기 사용)이 있습니다. –

답변

0

이 경우 example.py의 사전을 직접 업데이트하지 않아도됩니다. cPickle을 사용하여 파일에서 데이터를 읽는 방법이 약간 다릅니다.

import cPickle 
with open(r"data.pk", "rb") as input_file: 
    cPickle.load(d, input_file) 

가 (다른 스크립트)이 cPickle 파일에 기록하려면, 나는에서 동적 사전을로드합니다

import cPickle 
d = { 
    'a': {'b': 5, 'c': 6}, 
    'd': {'e': 7, 'f': 8} 
} 
# Add some logic to dynamically update d 
with open(r"data.pk", "wb") as output_file: 
    cPickle.load(d, output_file) 
+0

다이내믹로드가 문제가되지 않아야합니다 !!! – Jackie

+0

이것이 도움이 되었다면 정답으로 사용하는 것을 잊지 마십시오 :) – martianwars

+0

안녕하세요 Jackie, 여기에 어떤 업데이트가 있습니까? 이 대답은 괜찮습니까? – martianwars