我有一个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中一个接一个地处理我的所有文件吗?

有任何想法吗?
谢谢

最佳答案

您应该通过.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

10-08 04:58