我有一个python脚本,可用于逐个解析我的xml文件,并在Windows CMD上使用批处理文件运行它。我的script.py
是这样的:
from lxml import etree as ET
import pandas as pd
import numpy as np
#Read one xml file of Dedcoded directory
tree = ET.parse('C:/Users/sky/Documents/title_file.xml')
root = tree.getroot()
CODE = [ ]
for errors in root.findall('.//Data/Record/Field[11]/BitField'):
error = errors.find('Name').text
error_code = errors.find('RawValue').text
if error_code is not None:
CODE.append(error_code)
dftest = pd.DataFrame(CODE, columns=['Error_Code'])
dftest['I_F_Name'] = root.find('./Header/InitialFileName').text
dftest['AC_prog'] = root.find('./Header/ACProgram').text
dftest['Standard'] = root.find('./Header/Standard').text
dftest.to_csv('sh_test.csv', mode='w', header=True, index=False)
它非常适合单个xml文件,但是我有很多xml文件,我想一个一个地自动处理它们。为此,我在
for loop
中添加了file.bat
,并且在CMD上运行它时,它会多次处理script.py
中给出的相同文件。有我的批处理脚本:@echo of
for /R C:/Users/sky/Documents %%f in (*.xml) do C:\ProgramData\Anaconda2\python.exe C:/Users/sky/Documents/script.py %*
pause
我不知道要在我的
script.py
或file.bat
中一个接一个地处理我的所有文件吗?有任何想法吗?
谢谢
最佳答案
您应该通过.bat文件正在发送的参数删除python代码中的静态xml文件。
例
import sys
# ...
tree = ET.parse(sys.argv[1])
# ...
您还需要更改蝙蝠文件:
@echo of
for %%f in (C:\Users\sky\Documents\*.xml) do C:\ProgramData\Anaconda2\python.exe C:/Users/sky/Documents/script.py %%f
pause