我有一个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
中修改哪些内容来逐个处理我的所有文件?
有什么想法吗? 感谢
答案 0 :(得分:1)
你应该通过.bat文件发送的参数删除python代码中的静态xml文件。
实施例
import sys
# ...
tree = ET.parse(sys.argv[1])
# ...
您还需要更改您的bat文件:
@echo of
for %%f in (C:\Users\sky\Documents\*.xml) do C:\ProgramData\Anaconda2\python.exe C:/Users/sky/Documents/script.py %%f
pause