Intake로 JSON 파일을 여는 방법은 무엇입니까?

rdmolony

intakeJSON 파일에 대한 데이터 카탈로그를 만드는 데 사용하려고 합니다. # 197 에서는 " json.loads각 파일이 객체 목록으로 평가되는 단일 JSON 블록 인 경우 본질적으로 리더 기능을 제공해야합니다."라고 언급 합니다.

나는 test.json

{
    "test": "test"
}

및 ( Intake로 데이터 엔지니어링 복사 ) 시도

import json
import intake
source = intake.open_textfiles("test.json", decoder=json.loads)
print(source.yaml())

출력을 source.yaml

sources:
  textfiles:
    args:
      decoder: !!python/name:json.loads ''
      urlpath: test.json
    description: ''
    driver: intake.source.textfiles.TextFilesSource
    metadata: {}

그리고 그것을 열어 보았습니다

cat = intake.open_catalog('source.yaml')

생산 :

---------------------------------------------------------------------------
ConstructorError                          Traceback (most recent call last)
<ipython-input-55-9b8e3a51ebc2> in <module>()
----> 1 cat = intake.open_catalog('source.yaml')

/home/wsl-rowanm/miniconda3/envs/ireland-smartmeterdata/lib/python3.7/site-packages/intake/__init__.py in open_catalog(uri, **kwargs)
    160         raise ValueError('Unknown catalog driver (%s), supply one of: %s'
    161                          % (driver, list(sorted(registry))))
--> 162     return registry[driver](uri, **kwargs)
    163 
    164 

/home/wsl-rowanm/miniconda3/envs/ireland-smartmeterdata/lib/python3.7/site-packages/intake/catalog/local.py in __init__(self, path, autoreload, **kwargs)
    550         self.autoreload = autoreload  # set this to False if don't want reloads
    551         self.filesystem = kwargs.pop('fs', None)
--> 552         super(YAMLFileCatalog, self).__init__(**kwargs)
    553 
    554     def _load(self, reload=False):

/home/wsl-rowanm/miniconda3/envs/ireland-smartmeterdata/lib/python3.7/site-packages/intake/catalog/base.py in __init__(self, name, description, metadata, auth, ttl, getenv, getshell, persist_mode, storage_options, *args)
    111         self.updated = time.time()
    112         self._entries = self._make_entries_container()
--> 113         self.force_reload()
    114 
    115     @classmethod

/home/wsl-rowanm/miniconda3/envs/ireland-smartmeterdata/lib/python3.7/site-packages/intake/catalog/base.py in force_reload(self)
    168     def force_reload(self):
    169         """Imperative reload data now"""
--> 170         self._load()
    171         self.updated = time.time()
    172 

/home/wsl-rowanm/miniconda3/envs/ireland-smartmeterdata/lib/python3.7/site-packages/intake/catalog/local.py in _load(self, reload)
    580                 logger.warning("Use of '!template' deprecated - fixing")
    581                 text = text.replace('!template ', '')
--> 582             self.parse(text)
    583 
    584     def add(self, source, name=None, path=None, storage_options=None):

/home/wsl-rowanm/miniconda3/envs/ireland-smartmeterdata/lib/python3.7/site-packages/intake/catalog/local.py in parse(self, text)
    649         """
    650         self.text = text
--> 651         data = yaml_load(self.text)
    652 
    653         if data is None:

/home/wsl-rowanm/miniconda3/envs/ireland-smartmeterdata/lib/python3.7/site-packages/intake/utils.py in yaml_load(stream)
     73     """Parse YAML in a context where duplicate keys raise exception"""
     74     with no_duplicate_yaml():
---> 75         return yaml.safe_load(stream)
     76 
     77 

/home/wsl-rowanm/miniconda3/envs/ireland-smartmeterdata/lib/python3.7/site-packages/yaml/__init__.py in safe_load(stream)
    160     to be safe for untrusted input.
    161     """
--> 162     return load(stream, SafeLoader)
    163 
    164 def safe_load_all(stream):

/home/wsl-rowanm/miniconda3/envs/ireland-smartmeterdata/lib/python3.7/site-packages/yaml/__init__.py in load(stream, Loader)
    112     loader = Loader(stream)
    113     try:
--> 114         return loader.get_single_data()
    115     finally:
    116         loader.dispose()

/home/wsl-rowanm/miniconda3/envs/ireland-smartmeterdata/lib/python3.7/site-packages/yaml/constructor.py in get_single_data(self)
     49         node = self.get_single_node()
     50         if node is not None:
---> 51             return self.construct_document(node)
     52         return None
     53 

/home/wsl-rowanm/miniconda3/envs/ireland-smartmeterdata/lib/python3.7/site-packages/yaml/constructor.py in construct_document(self, node)
     53 
     54     def construct_document(self, node):
---> 55         data = self.construct_object(node)
     56         while self.state_generators:
     57             state_generators = self.state_generators

/home/wsl-rowanm/miniconda3/envs/ireland-smartmeterdata/lib/python3.7/site-packages/yaml/constructor.py in construct_object(self, node, deep)
     98                     constructor = self.__class__.construct_mapping
     99         if tag_suffix is None:
--> 100             data = constructor(self, node)
    101         else:
    102             data = constructor(self, tag_suffix, node)

/home/wsl-rowanm/miniconda3/envs/ireland-smartmeterdata/lib/python3.7/site-packages/intake/utils.py in no_duplicates_constructor(loader, node, deep)
     30     for key_node, value_node in node.value:
     31         key = loader.construct_object(key_node, deep=deep)
---> 32         value = loader.construct_object(value_node, deep=deep)
     33         if key in mapping:
     34             from intake.catalog.exceptions import DuplicateKeyError

/home/wsl-rowanm/miniconda3/envs/ireland-smartmeterdata/lib/python3.7/site-packages/yaml/constructor.py in construct_object(self, node, deep)
     98                     constructor = self.__class__.construct_mapping
     99         if tag_suffix is None:
--> 100             data = constructor(self, node)
    101         else:
    102             data = constructor(self, tag_suffix, node)

/home/wsl-rowanm/miniconda3/envs/ireland-smartmeterdata/lib/python3.7/site-packages/intake/utils.py in no_duplicates_constructor(loader, node, deep)
     30     for key_node, value_node in node.value:
     31         key = loader.construct_object(key_node, deep=deep)
---> 32         value = loader.construct_object(value_node, deep=deep)
     33         if key in mapping:
     34             from intake.catalog.exceptions import DuplicateKeyError

/home/wsl-rowanm/miniconda3/envs/ireland-smartmeterdata/lib/python3.7/site-packages/yaml/constructor.py in construct_object(self, node, deep)
     98                     constructor = self.__class__.construct_mapping
     99         if tag_suffix is None:
--> 100             data = constructor(self, node)
    101         else:
    102             data = constructor(self, tag_suffix, node)

/home/wsl-rowanm/miniconda3/envs/ireland-smartmeterdata/lib/python3.7/site-packages/intake/utils.py in no_duplicates_constructor(loader, node, deep)
     30     for key_node, value_node in node.value:
     31         key = loader.construct_object(key_node, deep=deep)
---> 32         value = loader.construct_object(value_node, deep=deep)
     33         if key in mapping:
     34             from intake.catalog.exceptions import DuplicateKeyError

/home/wsl-rowanm/miniconda3/envs/ireland-smartmeterdata/lib/python3.7/site-packages/yaml/constructor.py in construct_object(self, node, deep)
     98                     constructor = self.__class__.construct_mapping
     99         if tag_suffix is None:
--> 100             data = constructor(self, node)
    101         else:
    102             data = constructor(self, tag_suffix, node)

/home/wsl-rowanm/miniconda3/envs/ireland-smartmeterdata/lib/python3.7/site-packages/intake/utils.py in no_duplicates_constructor(loader, node, deep)
     30     for key_node, value_node in node.value:
     31         key = loader.construct_object(key_node, deep=deep)
---> 32         value = loader.construct_object(value_node, deep=deep)
     33         if key in mapping:
     34             from intake.catalog.exceptions import DuplicateKeyError

/home/wsl-rowanm/miniconda3/envs/ireland-smartmeterdata/lib/python3.7/site-packages/yaml/constructor.py in construct_object(self, node, deep)
     98                     constructor = self.__class__.construct_mapping
     99         if tag_suffix is None:
--> 100             data = constructor(self, node)
    101         else:
    102             data = constructor(self, tag_suffix, node)

/home/wsl-rowanm/miniconda3/envs/ireland-smartmeterdata/lib/python3.7/site-packages/yaml/constructor.py in construct_undefined(self, node)
    427         raise ConstructorError(None, None,
    428                 "could not determine a constructor for the tag %r" % node.tag,
--> 429                 node.start_mark)
    430 
    431 SafeConstructor.add_constructor(

ConstructorError: could not determine a constructor for the tag 'tag:yaml.org,2002:python/name:json.loads'
  in "<unicode string>", line 4, column 16:
          decoder: !!python/name:json.loads ''

이 문제를 해결하는 방법을 잘 모르겠으며 어떤 팁이라도 정말 감사하겠습니다!

mdurant

불행히도 그 예는 오래되었습니다. 그 이유는 YAML 파일이 안전 모드를 통해로드되어야하므로 포함 된 python 객체에 대한 참조가 실행되지 않기 때문입니다. 즉, 콘텐츠에 액세스하고 가능한 코드를 실행할 것인지 결정하기 전에 알 수없는 카탈로그를로드하고 검사 할 수 있습니다.

상황에 따라 해결 방법은 데이터를 메모리로 가져온 다음 손으로 디코딩하는 것입니다.

cat = intake.open_catalog('source.yaml')
cat.textfiles.to_dask.map(json.loads). # via dask
[json.loads(obj) for obj in cat.textfiles.read()]  # straight python

함수 객체 대신 정규화 된 함수 이름 (이 경우 "json.loads")을 사용하여 텍스트 파일에서로드 후 처리 단계를 정의 할 수 있어야한다는 Intake 문제를 제기 할 수 있습니다.

또한 Intake에 "파생 데이터 소스"를 도입 할 계획입니다.이 기능은 일반적으로 다른 데이터 소스에 함수 및 인수를 적용하고 귀하의 경우에도 사용할 수 있지만 아직 구현되지 않았습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

json 파일을 반복하는 방법은 무엇입니까?

분류에서Dev

터미널로 여러 파일을 만드는 방법은 무엇입니까?

분류에서Dev

선행 공백을 사용하여 txt 파일을 json으로 변환하는 방법은 무엇입니까?

분류에서Dev

.json 및 .list 파일의 데이터를 Python을 사용하여 교대로 결합하여 새 JSON 파일로 덤프하는 방법은 무엇입니까?

분류에서Dev

Python을 사용하여 txt 파일을 json 형식으로 변환하는 방법은 무엇입니까?

분류에서Dev

팬더로 독일어 CSV 파일을 여는 방법은 무엇입니까?

분류에서Dev

Python에서 JSON의 텍스트 파일을 JSON 배열로 변환하는 방법은 무엇입니까?

분류에서Dev

Angular Library에서 로컬 JSON 파일을 읽는 방법은 무엇입니까?

분류에서Dev

React로 로컬 서버 JSON 파일을 읽는 방법은 무엇입니까?

분류에서Dev

JSON 파일을 postgresql databse로 읽는 방법은 무엇입니까?

분류에서Dev

Java를 사용하여 예쁜 형식의 json 파일을 간단한 한 줄 json 파일로 변환하는 방법은 무엇입니까?

분류에서Dev

json 파일을 반복하는 방법은 무엇입니까?

분류에서Dev

Android에서 JSON으로 파일을 보내는 방법은 무엇입니까?

분류에서Dev

Android에서 JSON으로 파일을 보내는 방법은 무엇입니까?

분류에서Dev

여러 파일을 ffmpeg로 파이프하는 방법은 무엇입니까?

분류에서Dev

로컬 Emacs로 원격 파일 (ssh)을 여는 방법은 무엇입니까?

분류에서Dev

JSON 파일을 검색하는 방법은 무엇입니까?

분류에서Dev

터미널로 여러 파일을 만드는 방법은 무엇입니까?

분류에서Dev

C #을 사용하여 JSON 파일에 쓰는 방법은 무엇입니까?

분류에서Dev

로컬 json 파일의 json을 Android의 ListView로 구문 분석하는 방법은 무엇입니까?

분류에서Dev

오류 검사로 여러 파일을 읽는 방법은 무엇입니까?

분류에서Dev

AngularJS로 JSON을 검색하는 방법은 무엇입니까?

분류에서Dev

cmd로 파일을 만드는 방법은 무엇입니까?

분류에서Dev

파이썬에서 하나의 json 파일을 출력으로 만드는 방법은 무엇입니까?

분류에서Dev

한 파일의 값이 다른 파일의 인수로 사용될 때 여러 JSON 파일을 Onservable 배열에 전달하는 방법은 무엇입니까?

분류에서Dev

API JSON 결과로 파일을 반환하는 방법은 무엇입니까?

분류에서Dev

d3에서 객체로 json 파일을 여는 방법은 무엇입니까?

분류에서Dev

Javascript를 사용하여 json 데이터를 json 파일로 덤프하는 방법은 무엇입니까?

분류에서Dev

jq로 JSON을 삭제하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    json 파일을 반복하는 방법은 무엇입니까?

  2. 2

    터미널로 여러 파일을 만드는 방법은 무엇입니까?

  3. 3

    선행 공백을 사용하여 txt 파일을 json으로 변환하는 방법은 무엇입니까?

  4. 4

    .json 및 .list 파일의 데이터를 Python을 사용하여 교대로 결합하여 새 JSON 파일로 덤프하는 방법은 무엇입니까?

  5. 5

    Python을 사용하여 txt 파일을 json 형식으로 변환하는 방법은 무엇입니까?

  6. 6

    팬더로 독일어 CSV 파일을 여는 방법은 무엇입니까?

  7. 7

    Python에서 JSON의 텍스트 파일을 JSON 배열로 변환하는 방법은 무엇입니까?

  8. 8

    Angular Library에서 로컬 JSON 파일을 읽는 방법은 무엇입니까?

  9. 9

    React로 로컬 서버 JSON 파일을 읽는 방법은 무엇입니까?

  10. 10

    JSON 파일을 postgresql databse로 읽는 방법은 무엇입니까?

  11. 11

    Java를 사용하여 예쁜 형식의 json 파일을 간단한 한 줄 json 파일로 변환하는 방법은 무엇입니까?

  12. 12

    json 파일을 반복하는 방법은 무엇입니까?

  13. 13

    Android에서 JSON으로 파일을 보내는 방법은 무엇입니까?

  14. 14

    Android에서 JSON으로 파일을 보내는 방법은 무엇입니까?

  15. 15

    여러 파일을 ffmpeg로 파이프하는 방법은 무엇입니까?

  16. 16

    로컬 Emacs로 원격 파일 (ssh)을 여는 방법은 무엇입니까?

  17. 17

    JSON 파일을 검색하는 방법은 무엇입니까?

  18. 18

    터미널로 여러 파일을 만드는 방법은 무엇입니까?

  19. 19

    C #을 사용하여 JSON 파일에 쓰는 방법은 무엇입니까?

  20. 20

    로컬 json 파일의 json을 Android의 ListView로 구문 분석하는 방법은 무엇입니까?

  21. 21

    오류 검사로 여러 파일을 읽는 방법은 무엇입니까?

  22. 22

    AngularJS로 JSON을 검색하는 방법은 무엇입니까?

  23. 23

    cmd로 파일을 만드는 방법은 무엇입니까?

  24. 24

    파이썬에서 하나의 json 파일을 출력으로 만드는 방법은 무엇입니까?

  25. 25

    한 파일의 값이 다른 파일의 인수로 사용될 때 여러 JSON 파일을 Onservable 배열에 전달하는 방법은 무엇입니까?

  26. 26

    API JSON 결과로 파일을 반환하는 방법은 무엇입니까?

  27. 27

    d3에서 객체로 json 파일을 여는 방법은 무엇입니까?

  28. 28

    Javascript를 사용하여 json 데이터를 json 파일로 덤프하는 방법은 무엇입니까?

  29. 29

    jq로 JSON을 삭제하는 방법은 무엇입니까?

뜨겁다태그

보관