Как читать xer-файлы с помощью Python?
У меня есть некоторые файлы Primavera .xer. Я могу открыть эти файлы в блокноте, и я вижу, что есть некоторые текстовые данные (это похоже на данные базы данных).
Есть ли парсеры Python для этих файлов?
3 ответа
Формат Primavera P6 XER действительно уязвим для анализа модулем CSV. Это в основном формат резервных копий с разделителями табуляции для реляционной базы данных.
Первая строка - это некоторая мета-информация о файле. После этого каждая строка начинается с кода, который сообщает, что содержит остальная часть строки:
- % T дает название таблицы.
- % F дает имена некоторых полей в этой таблице, все в одной строке.
- % R - это запись для самой последней определенной таблицы.
- % E - маркер конца файла.
Остальное полностью зависит от того, как вы хотите использовать данные. Со своей стороны, я сначала помещаю данные непосредственно в (свежую, новую) базу данных SQLITE, а потом беспокоюсь о приложениях.
Не идеальное решение, но вы можете попробовать использовать MPXJ. MPXJ сам по себе является библиотекой Java, но при условии, что вы можете запустить отдельный процесс из вашего кода Python, вы можете заставить его конвертировать файл XER в JSON, который должен быть проще в использовании (этот подход используется в геме MPXJ Ruby, это просто оборачивая код Java, выполняющий преобразование, затем читая полученный JSON). Вы также должны найти структуру данных расписания в JSON, сгенерированном MPXJ, с которой проще работать, чем с содержимым файла XER, хотя у вас не будет доступа ко всем атрибутам в исходном файле XER.
Рубиновую версию этого процесса можно найти здесь. Подводя итог, командная строка будет выглядеть примерно так:
java -cp <classpath> net.sf.mpxj.sample.MpxjConvert your-file.xer your-file.json
Вам просто нужно установить поставку <classpath>
сообщить JVM, где находится MPXJ JAR и его зависимости.
Я знаю, что немного поздно. Однако я искал аналогичный ответ, и я не мог. Итак, я начал разработку пакета с открытым исходным кодом под названием PyP6XER. Вы можете установить его или внести свой вклад в разработку на githubhttps://github.com/HassanEmam/PyP6Xer .
Обратите внимание, что пакет все еще находится на ранних стадиях и плохо документирован.