【发布时间】:2014-06-05 21:45:57
【问题描述】:
目前,我的代码使用 XML 文件的名称作为参数,以获取该文件,解析其中的一些内容并使用它来重命名所述文件,我的意思是实际运行我的程序一次,然后程序将在目录中搜索每个 XML 文件(即使它在 zip 中)并使用相同的参数重命名它,这是我遇到的问题。
#encoding:utf-8
import os, re
from sys import argv
script, nombre_de_archivo = argv
regexFecha = r'\d{4}-\d{2}-\d{2}'
regexLocalidad = r'localidad=\"[\w\s.,-_]*\"'
regexNombre = r'nombre=\"[\w\s.,-_]*\"'
regexTotal = r'total=\"\d+.?\d+\"'
fechas = []; localidades = []; nombres = []; totales = []
archivo = open(nombre_de_archivo)
for linea in archivo.readlines():
fechas.append(re.findall(regexFecha, linea))
localidades.append(re.findall(regexLocalidad, linea))
nombres.append(re.findall(regexNombre, linea))
totales.append(re.findall(regexTotal, linea))
fecha = str(fechas[1][0])
localidad = str(localidades[1][0]).strip('localidad=\"')
nombre = str(nombres[1][0]).strip('nombre=\"')
total = str(totales[1][0]).strip('total=\"')
nombre_nuevo_archivo = fecha+"_"+localidad+"_"+nombre+"_"+total+".xml"
os.rename(nombre_de_archivo, nombre_nuevo_archivo)
编辑:这就是一个例子。
目录只包含3个文件和程序。
silly.xml amusing.zip feisty.txt
所以,你运行程序,它会忽略 feisty,因为它是一个 .txt 文件,它读取 silly.xml,ti 然后解析“fechas、localidad、nombre、total”连接或附加或其他任何内容,并将其用作新的silly.xml 的文件,然后程序检查 zip 是否有 xml 文件,如果有,则执行相同的操作。
所以最终我们会有
20141211_sonora_walmart_2033.xml 20141008_sonora_starbucks_102.xml 好斗的txt amusing.zip
【问题讨论】:
-
显示输入(文件名列表)和预期输出(修改后的文件名)是有意义的。
-
您还需要
close打开的文件。 -
我编辑了类似的东西作为例子。