Попытка получить аргументы командной строки для работы с моим кодом, но с ошибкой - TypeError: объект 'NoneType' не вызывается - PullRequest
0 голосов
/ 06 декабря 2018

Привет всем. Я довольно новичок в программировании и Python, но у меня почти есть этот кусок кода.Мне просто нужно выяснить, как заставить аргументы, вызываемые в командной строке, работать с моим кодом.То, что я пробовал, не сработало. Вот эта часть:

tree.find ("./ PLANT / [COMMON = '% s'"% sys.argv [3]):

Вот весь мой код:

import os
import xml.etree.ElementTree as ET
import sys

# changes to the correct directory of each different environment
os.chdir(os.path.expanduser('~/Desktop'))

file = "plant_catalog.xml"
tree = ET.parse(file)

# Finds section by plant name and adjusts the price according to argument
 for plant in tree.find("./PLANT/[COMMON='%s'" % sys.argv[3]):
    if plant.tag == "PRICE":
        plant.text = float(plant.text) * sys.argv[4]
        plant.text = str(plant.text)
    print(plant.text)

tree.write("plant_catalog.xml")

Вот ошибки:

Traceback (последний вызов был последним): Файл "C: / Users/cader/PycharmProjects/ModifyML/ModifyML.py ", строка 14, для завода в tree.find (имя): файл" C: \ Users \ cader \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ xml \ etree\ ElementTree.py ", строка 653, находить и возвращать self._root.find (путь, пространства имен) в файле" C: \ Users \ cader \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ xml \ etree \ ElementPath.py", строка 307, в поиске return next (iterfind (элемент, путь, пространства имен), нет) Файл" C: \ Users \ cader \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ xml \ etree \ ElementPath.py ", строка 300, в iterfind result = select (context, result) TypeError: объект 'NoneType' не может быть вызван

Процесс завершен с кодом выхода 1

Мне очень жаль, еслиэто плохо отформатировано, я создал аккаунт только длязадайте этот вопрос.

1 Ответ

0 голосов
/ 06 декабря 2018

У меня сложилось впечатление, что результатом ET.parse(file) является нулевой указатель (результата нет).

Я бы посоветовал вам проверить эту функцию parse().Если у вас есть проблемы, вы можете отредактировать свой вопрос и добавить исходный код этой функции.

...