簡體   English   中英

在python中輸入“string”到“dict”

[英]type "string" to “dict” in python

我是 python 新手。我正在閱讀源代碼並得到一些疑問。

 if config_path:
        logging.info('loading config from %s' % config_path)
        with open(config_path, 'rb') as f:
            try:
                **config = parse_json_in_str(f.read().decode('utf8'))**
            except ValueError as e:
                logging.error('found an error in config.json: %s',
                              e.message)
                sys.exit(1)
    else:
        config = {}

變量“config”在這里是一個字符串(parse_json_in_str)。這里是 parse_json_in_str:

def parse_json_in_str(data):
# parse json and convert everything from unicode to str
return json.loads(data, object_hook=_decode_dict)

進而:

 v_count = 0
    for key, value in optlist:
        if key == '-p':
            config['server_port'] = int(value)
        elif key == '-k':
            config['password'] = to_bytes(value)
        elif key == '-l':
            config['local_port'] = int(value)
        elif key == '-s':
            config['server'] = to_str(value)
        elif key == '-m':
            config['method'] = to_str(value)
        elif key == '-b':
            config['local_address'] = to_str(value)
        elif key == '-v':
            v_count += 1
            # '-vv' turns on more verbose mode
            config['verbose'] = v_count
        elif key == '-t':
            config['timeout'] = int(value)

        .....
        elif key == '-q':
            v_count -= 1
            config['verbose'] = v_count
except getopt.GetoptError as e:
    print(e, file=sys.stderr)
    print_help(is_local)
    sys.exit(2)

為什么“配置”變成了字典?

在這種情況下, json.loads 正在返回一個字典...... json 文檔說,

使用此轉換表將 s(包含 JSON 文檔的 str 或 unicode 實例)反序列化為 Python 對象。

並且轉換表說 json 對象轉換為dict

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM