4 votos

Descomprimir un archivo usando python caller en FME 2011

La idea es descargar un archivo comprimido de un sitio web y descomprimirlo con FME 2011. He adjuntado una captura de pantalla de FME workbench que no funciona.

FME Workbench

1voto

Jason Z Puntos 111

Su código parece incorrecto. Inténtalo:

import pyfme, os, zipfile
z = zipfile.ZipFile("GoTransitDL.zip")
z.extractall()

Y sólo como advertencia (de los documentos de la API):

Advertencia Nunca extraiga archivos de fuentes no confiables sin una inspección previa. Es posible que se creen archivos fuera de la ruta, por ejemplo, miembros que tengan nombres de archivo absolutos que empiecen por "/" o nombres de archivo con dos puntos "..".

Se puede hacer que el archivo zip extraiga los archivos a cualquier lugar del disco duro, y z.extractall() lo hará. Muy peligroso si no se conoce la fuente.

0voto

auramo Puntos 161

Acabo de hacer exactamente lo mismo. Deberías revisar la documentación del PythonCaller . Debe crear una función o clase como se describe en la ayuda. Utilice una función para procesar una sola característica, como en este caso.

Ejemplo:

from zipfile import ZipFile

def fmeUnzip(fmeFeature):
    zipFile = fmeFeature.getAttribute("_ZIPFILE_NAME")
    outDir = fmeFeature.getAttribute("_OUTPUT_DIR")
    unzip(zipFile, outDir)

def unzip(zipFile, outDir):
    z = ZipFile(zipFile)
    z.extractall(outDir)

En los parámetros de PythonCaller, establezca 'Symbol to use' como fmeUnzip y copiar el código en el parámetro de código fuente. También puede guardarlo en un archivo .py, consulte la ayuda de PythonCaller para saber cómo hacerlo.

Nota: _ZIPFILE_NAME y _OUTPUT_DIR son atributos creados por ParameterFetcher transformadores, que crean atributos basados en los valores de los parámetros del espacio de trabajo.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X