2009-01-29 19 views
7

Tengo el siguiente código en el archivo .py:¿Cómo puedo pasar un nombre de archivo como parámetro a mi módulo?

import re 

regex = re.compile(
    r"""ULLAT:\ (?P<ullat>-?[\d.]+).*? 
    ULLON:\ (?P<ullon>-?[\d.]+).*? 
    LRLAT:\ (?P<lrlat>-?[\d.]+)""", re.DOTALL|re.VERBOSE) 

tengo los datos en el archivo .txt como una secuencia:

QUADNAME: rockport_colony_SD 
RESOLUTION: 10 ULLAT: 43.625 ULLON: 
-97.87527466 LRLAT: 43.5 LRLON: -97.75027466 HDATUM: 27 ZMIN: 361.58401489 ZMAX: 413.38400269 ZMEAN: 396.1293335 ZSIGMA: 12.36359215 PMETHOD: 5 QUADDATE: 20001001 

¿Cómo puedo usar el -file Python para procesar el. txt -file?

supongo que necesitamos un parámetro en el archivo .py, por lo que podemos utilizar una sintaxis como en el terminal:

$ py-file file-to-be-processed 

Esta cuestión se suscitó por el puesto here.

+0

La respuesta de Andrew proporciona todo lo que usted solicitó. – Geo

Respuesta

17

Necesita leer el archivo y buscar los contenidos usando la expresión regular. El módulo sys contiene una lista, argv, que contiene todos los parámetros de línea de comando. Sacamos el segundo (el primero es el nombre del archivo utilizado para ejecutar el script), abrimos el archivo y luego leemos los contenidos.

 
import re 
import sys 

file_name = sys.argv[1] 
fp = open(file_name) 
contents = fp.read() 

regex = re.compile(
    r"""ULLAT:\ (?P-?[\d.]+).*? 
    ULLON:\ (?P-?[\d.]+).*? 
    LRLAT:\ (?P-?[\d.]+)""", re.DOTALL|re.VERBOSE) 

match = regex.search(contents) 

Véase el Python regular expression documentation para obtener información sobre lo que puede hacer con el objeto partido. Consulte this part of the documentation para saber por qué necesitamos buscar en lugar de buscar coincidencias al escanear el archivo.

Este código le permitirá usar la sintaxis que especificó en su pregunta.

Cuestiones relacionadas