Скрипт для выполнения нескольких python файлов для Windows - PullRequest
2 голосов
/ 10 января 2020

У меня есть сценарий python (script.py), для которого требуется один файл на каждый вход (input.txt) и один файл на каждый выход (output.txt). Плюс, скрипт требует дополнительных данных из model.pcl. Я выполняю скрипт через консоль. Для windows это выглядит так:

type input.txt | python script.py model.pcl output.txt

Я хотел бы применить этот скрипт к 10 тысячам файлов и сохранить результат в отдельных текстовых файлах.

Я знаю, как сделать это с помощью python:

import subprocess
for i in range(1, 10001):
    e = 'type input_%s.txt | python script.py model.pcl output/output_%s.txt' % (i,i)
    subprocess.call(e, shell=True)

Но это не идеальное решение, потому что в этом подходе я не могу указать папку для входного файла (input / input_% s.txt). Если я пытаюсь это сделать, я получаю сообщение об ошибке:

the syntax of the command is incorrect.

Есть ли другие варианты для Windows машины?

Ответы [ 3 ]

0 голосов
/ 10 января 2020

Я сталкивался с подобной проблемой, как это в python. Это сработало для меня, когда я добавил все элементы в список.

import subprocess 
for i in range(1, 10001): 
    e = ['type input_%s.txt | python script.py model.pcl output/output_%s.txt' % (i,i)]
    subprocess.call(e, shell=True)

Можете ли вы проверить это и сообщить, работает ли он для вас?

0 голосов
/ 11 января 2020

Это должно сделать необходимое из Windows CMD Prompt:

FOR /L %# IN (1,1,10001) DO @TYPE "C:\Path\To\input_%#.txt"   | python script.py model.pcl "C:\Path\To\output_%#.txt"
0 голосов
/ 10 января 2020

Одна опция похожа на эту

#Path to all files
path = os.getcwd()
#Puts file names to a variable
files = os.listdir(path)
#Gets just the .txt
txtFiles = glob.glob(path + "/*.txt")

Это позволит вам делать все .txt файлы в указанной папке c, в идеале ту, в которую помещен скрипт, но это может быть легко модифицировано

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...