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'
ошибка Я сталкиваюсь является:
Traceback (most recent call last):
File "./runPipeline.py", line 30, in <module>
for key, value in confDict.iteritems():
NameError: name 'confDict' is not defined
Что я интерпретировать как имя «confDict» вышел за рамки. Я не понимаю, почему он вышел из сферы действия.
На самом деле это не так много проблем с python, как вы думаете. Даже в perl вы должны вызвать функцию (или sub) для выполнения кода. Это говорит о том, что область в perl должна быть одной и той же концепцией, если вы не используете супер страшный «нестрогий режим» – jdi