#python #syntax-error #bz2
#python #синтаксическая ошибка #bz2
Вопрос:
При использовании приведенного ниже кода, который доступен здесь, у меня возникает синтаксическая ошибка, и я не знаю почему! Я предположил, что это потому, что я не устанавливал упомянутую библиотеку в коде, но это не так.
import os
import xml.etree.ElementTree as ET
#A helpful function to load compressed or uncompressed XML files
def loadXMLFile("config.xml"):
#Check if the file is compressed or not, and
if (os.path.splitext("config.xml")[1][1:].strip() == "bz2"):
import bz2
f = bz2.BZ2File("output.bz2")
doc = ET.parse(f)
f.close()
return doc
else:
return ET.parse("config.xml")
#Load the XML file config.out.xml
XMLDoc=loadXMLFile("config.out.xml")
#We can create a list of all particle tags using an xpath expression
#(xpath expressions always return lists)
PtTags = XMLDoc.findall("//Pt")
#Print the number of particles
print len(PtTags)
#print the x, y, and z positions of each particle
for PtElement in PtTags:
PosTag = PtElement.find("P")
print PosTag.get("x"), PosTag.get("y"), PosTag.get("z"), PtElement.get("D")
Вот исходный файл, в котором есть «filename»
#!/usr/bin/python
import os
import xml.etree.ElementTree as ET
#A helpful function to load compressed or uncompressed XML files
def loadXMLFile(filename):
#Check if the file is compressed or not, and
if (os.path.splitext(filename)[1][1:].strip() == "bz2"):
import bz2
f = bz2.BZ2File(filename)
doc = ET.parse(f)
f.close()
return doc
else:
return ET.parse(filename)
#Load the XML file config.out.xml
XMLDoc=loadXMLFile("config.out.xml")
#We can create a list of all particle tags using an xpath expression
#(xpath expressions always return lists)
PtTags = XMLDoc.findall("//Pt")
#Print the number of particles
print len(PtTags)
#print the x, y, and z positions of each particle
for PtElement in PtTags:
PosTag = PtElement.find("P")
print PosTag.get("x"), PosTag.get("y"), PosTag.get("z"), PtElement.get("D")
Я не знаю, в чем моя ошибка, с которой я сталкиваюсь с этой ошибкой? Есть ли какие-либо ошибки с каталогами? или, возможно, какие-то проблемы с именем файла?
Комментарии:
1. «синтаксическая ошибка» — какая синтаксическая ошибка? Если вы не опубликуете это, мы не сможем догадаться…
2. Вы используете Python 2 или Python 3? Ваши
3.
loadXMLFile("config.xml")
недопустимый синтаксис, как и вашеelse:
утверждение (из-за отсутствия отступов)4. @Barmar Я использую python3… В чем разница между инструкцией print в Python 3 и Python 2? Что именно должно быть изменено?
5. В Python 3
Ответ №1:
Вам не нужно вносить свои собственные правки. В примере кода filename
является параметром функции и не должен быть изменен на строку. В строке, где это написано, XMLDoc=loadXMLFile("config.out.xml")
функция открывает файл "config.out.xml"
и использует is в качестве filename
параметра.
Также есть проблемы с вашим оператором else, но это связано с тем, что вы изначально не редактировали функцию.
Попробуйте запустить исходный код без ваших правок и посмотрите, не появятся ли какие-либо ошибки.
https://www.pythoncentral.io/fun-with-python-function-parameters/
Комментарии:
1. Большое спасибо за вашу помощь. Проблема в том, что когда я оставляю «filename» без изменений и запускаю код, как вы сказали, без каких-либо изменений, я столкнулся с той же ошибкой. Я сделал снимок экрана, чтобы показать: photobox.co.uk/my/photo/full ? photo_id=501703268436
2. @AV Эта ссылка не работает, я просто вижу домашнюю страницу Photobox.