Скрипт Python для запуска FME Workbench - PullRequest
0 голосов
/ 11 января 2019

У меня более 500 XML-файлов, и каждый XML-файл должен обрабатываться в FME-среде отдельно (итерация FME-среды для каждого XML-файла). Для такого предложения мне нужно запустить файл python (IDLE 2.7 или альтернативную консоль python), чтобы выполнить итерации рабочей среды FME для каждого файла xml.

Весь процесс в прошлом работал на другом ПК без каких-либо проблем. Теперь, когда я запустил модуль, я получил следующую ошибку:

Traceback (последний вызов был последним): E: \ XML_Data Файл "E: \ XML_Data \ process \ 01_XML_Tile_1.py", строка 28, в если "Перевод был УСПЕШНЫМ" в открытом (path_log + "\" + data + ".log"). read (): Ошибка ввода-вывода: [Errno 2] Нет такого файла или каталога: 'E: \ XML_Data \ data_out \ log_01 \ re_3385-5275.xml.log'

Прикрепленный код Python.

Любая помощь очень ценится.

import os
import time
# Mainpath and Working Folder:
#path_main = r"E:\XML_Data"
path_main = r"E:\XML_Data"
teil = str("01")

# variables
path_in = path_main + r"\data_in\03_Places\teil_" + teil                # "Source folder of  XML files"
path_in_tile10 = path_main + r"\data_in\01_Tiling\10x10.shp"            # "Source folder of Grid shapefile"
path_in_commu = path_main + r"\data_in\02_Communities\Communities.shp"  # "Source folder of Communities shapefile"
path_out = path_main + r"\data_out\teil_" + teil                        # "Output folder of shapefiles that resulted from XML files (tile_01 folder)"
path_log = path_main + r"\data_out\log_" + teil                         # "Output folder of log files for each run(log_01 folder)"
path_fme = r"%FME_EXE_2015%"                                            # "C:\Program Files\FME2015\fme.exe"
path_fme_workbench = path_main + r"\process\PY_FME2015.fmw"             # "path of FME workbench"
datalists = os.listdir(path_in)
count = 0

# Schleife, in which each file is processed individually in FME
for data in datalists:
    if data.find(".xml") != -1:
        count +=1
        print ("Run-No." + str(count) + ": with data " + data)
        os.system (path_fme + " " + path_fme_workbench + " " + "--SourceDataset_XML"+ " " + path_in + "\\" + data + " " + "--SourceDataset_SHAPE" + " " + path_in_tile10 + " " + "--SourceDataset_SHAPE_COMU" + " " + path_in_commu + " " + "--DestDataset_SHAPE" +" " +path_out + " " +"LOG_FILENAME" + " " + path_log + "\\" + data + ".log" )
        print ("Data processed: " + data)
        shape = str(data[19:28]) + "_POPINT_CENTR_UTM32N.shp"
        print ("ResultsFileName: " + shape)
        if "Translation was SUCCESSFUL" in open(path_log + "\\" + data + ".log").read():
            # Translation was successful and SHP file exists:
            if os.path.isfile(path_out + "\\" + shape):
                write_log = open(path_out + "\\" + "result_xml.log", "a")
                write_log.write(time.asctime(time.localtime()) + " " + shape + "\n")
                write_log.close()
                print("Everything ok")
            #Translation was successful, but SHP file does not exist:
            else:
                write_log = open(path_out + "\\" + "error_xml.log", "a")
                write_log.write(time.asctime(time.localtime()) + " Data: " + shape + " unavailable.\n")
                write_log.close()      
        # Translation was not successful:
        else:
            write_log = open(path_out + "\\" + "error_xml.log", "a")
            write_log.write(time.asctime(time.localtime()) + " Translation " + Data + " not successful.\n")
            write_log.close()

print ("Number of calculated files: " + str(count))

1 Ответ

0 голосов
/ 08 марта 2019

Скорее всего, сценарий завершился ошибкой в ​​строке os.system, поэтому файл журнала не был создан из команды. Поскольку вы упомянули другой компьютер, это может быть вызвано многими причинами, например другой версией FME (поэтому переменная среды% FME_EXE_2015% не будет существовать).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...