如何在文件夹中的所有文件上运行批处理文件?

时间:2018-04-25 14:18:00

标签: python xml pandas batch-file

我有一个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.pyfile.bat中修改哪些内容来逐个处理我的所有文件?

有什么想法吗? 感谢

1 个答案:

答案 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