Новый python NameError при попытке напечатать CSV-файл - PullRequest
0 голосов
/ 01 июля 2019

Мой код ранее работал для печати в CSV-файл, но недавно начал генерировать NameError.Я посмотрел на множество других подобных вопросов, но не могу понять, как это исправить.Я относительно новичок в Python.

data = glob.glob('filename****')
filenames = data

for filename in filenames:
  root = lxml.etree.parse(filename)
  for stitle in root.xpath("//fileDesc/titleStmt/title[1]"):
      stitle = stitle.xpath("string()")

  for ltitle in root.xpath("//fileDesc/titleStmt/title[2]"):
      ltitle = ltitle.xpath("string()")

  for date in root.xpath("//fileDesc/sourceDesc/bibl/msDesc/additional/adminInfo/note"):
      date = date.xpath("string()")

  for location in root.xpath("//fileDesc/sourceDesc/bibl/pubPlace"):
      location = location.xpath("string()")

  with open('file.csv', 'a') as csv_file:
      writer = csv.writer(csv_file)
      writer.writerow([filename, stitle, ltitle, date, location])

Конкретная ошибка, которую я получаю: «NameError: имя« дата »не определено».Я использовал этот код раньше, и он работал.Любая помощь?Спасибо!

Ответы [ 2 ]

1 голос
/ 01 июля 2019

Добро пожаловать в StackOverflow.

Полагаю, вы впервые запускаете программу со значениями, root.xpath("//fileDesc/sourceDesc/bibl/msDesc/additional/adminInfo/note") пусто.

В таких случаях имя date никогда не связывается, и, следовательно, при попытке выполнить окончательный оператор

writer.writerow([filename, stitle, ltitle, date, location])

вы видите NameError. Этот интерактивный сеанс продемонстрирует:

>>> for date in []:
...   pass
...
>>> date
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'date' is not defined
0 голосов
/ 01 июля 2019

Это то, с чем вы сталкиваетесь.
Поскольку 7 не является gt 9 -> a не определено.В вашем случае «дата» не была найдена.

if 7 > 9:
    a = 11
print(a)

output

NameError: name 'a' is not defined
...