O.K., Perl에서 Python으로 이동하고 Python에서 많은 경험이 없으므로 Python에 대해 더 많은 경험을 가진 모든 사람에게 다소 분명한 것처럼 보일 수 있습니다.왜이 변수가 보이지 않습니까?
어쨌든 단순히 구성 파일을로드 한 다음 자체 테스트로로드 된 값을 인쇄합니다. 코드는 다음과 같습니다 :
는#!/home/y/bin/python2.7
import logging
import sys
import datetime
import yaml
def main(self):
#initialize the logger
logger = logging.getLogger(self.granularity)
log_fh = logging.FileHandler(filename='/home/logs/pipelineTest/pipelineTest' + datetime.datetime.now().strftime('%Y%m%d_%H%M') + '.log', mode='w')
logger.addHandler(log_fh)
logger.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)-6s: %(name)s - %(levelname)s - %(message)s')
log_fh.setFormatter(formatter)
#read configuration file
if sys.argv[1]:
ymlFH = open(sys.argv[1])
else:
ymFH = open('/home/conf/pipelineTest/runPipeline.yml')
confDict = yaml.load(ymlFH)
if __name__ == '__main__':
#self-test code
for key, value in confDict.iteritems():
print 'Key is: ' + key + '\n'
print 'value is: ' + confDict[key] + '\n'
I가 발생하고있어 오류 : 나는 이름이 "confDict"로 해석하고 있습니다
Traceback (most recent call last):
File "./runPipeline.py", line 30, in <module>
for key, value in confDict.iteritems():
NameError: name 'confDict' is not defined
는 범위를 벗어난왔다. 왜 그것이 범위를 벗어 났는지 이해가 안됩니다.
이것은 실제로 생각할 수있는 것처럼 파이썬 특정 문제가 아닙니다. perl에서도 코드를 실행하기 위해 함수 (또는 서브)를 호출해야합니다. 당신이 슈퍼 무서운 "비 엄격 모드"를 사용하지 않는다면 perl의 범위는 똑같은 컨셉이어야한다고 말하고 있습니다. – jdi