Как запустить командный файл для всех файлов в папке? - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть скрипт на 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, чтобы обрабатывать все мои файлы один за другим?

Есть идеи?Спасибо

1 Ответ

0 голосов
/ 25 апреля 2018

Вы должны удалить статический XML-файл в коде Python по аргументу, который отправляет .bat-файл.

Пример

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...