샘플 YAML 파일이 있는데 PyYAML 라이브러리를 사용하여 구문 분석 할 수 없습니다.
setup.yml
:
key: HostName
deviceid: port1
파이썬 코드
with open('../configs/setup.yml') as stream:
try:
print 'yaml.data ==', yaml.load(stream)
print 'yaml.data ==', type(yaml.load(stream))
# print 'yaml.data ==', dict(yaml.load(stream))
data = yaml.safe_load(stream)
self.device_id = data['deviceid']
self.key = yaml.load(stream)['key']
except yaml.YAMLError as exc:
print(exc)
yaml.load(stream)
유형은 Nonetype
나는 그것이 사전 있어야한다 생각.
첫 번째 스트림을 읽은 후에는 스트림에 load()
더 이상 데이터가없고 다음로드가 반환 None
되고 오류 (예 : 스트림 끝)가 발생하지 않습니다.
당신이 할 수있는 것은 :
import yaml
with open('../configs/setup.yml') as stream:
print 'yaml.data ==', yaml.load(stream)
stream.seek(0, 0)
print 'yaml.data ==', type(yaml.load(stream))
# print 'yaml.data ==', dict(yaml.load(stream))
with open('../configs/setup.yml') as stream:
data = yaml.safe_load(stream)
device_id = data['deviceid']
key = data['key']
또는로드 된 문서를 처음부터 데이터에 저장합니다. self.
이전 오류 로 인해 참조를 제거 했지만 정의되지 않은 변수에 도달하지 않았습니다.
그러나 PyYAML을 사용할 필요는 거의 없습니다 load()
(여기에서 확실히 사실 입니다). 안전 하지 않으며 경고도하지 않습니다. 제어되지 않은 데이터로 인해 디스크가 지워지거나 더 나빠질 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다