Как запустить пакетную команду в моем скрипте Python?

Мне нужно запустить однострочную пакетную команду в моем скрипте Python.

В настоящее время я сохраняю свою команду в файле .bat и выполняю файл .bat с помощью функции subprocess. Но я хочу опустить файл .bat и напрямую включить команду в свой скрипт python. Потому что мне может понадобиться использовать разные bat-файлы для разных вариантов использования. Я бы предпочел использовать один динамический скрипт Python, чем сохранять несколько файлов .bat.

Команда летучей мыши:

"C:\Program Files (x86)\temp\FL.B5.exe" /s /a "C:\Users\kuk\Downloads\B5+Typ B.2.asc" /o "C:\Users\kuk\Download\B5+Typ B.2.docx"

Скрипт Python был:

import subprocess as sp
sp.call([r"C:\Users\kuk\Downloads\test.bat"])

Я хочу:

import subprocess

exe = r"C:\Program Files (x86)\temp\FL.B5.exe"
input = r"C:\Users\kuk\Downloads\B5+Typ B.2.asc"
output = r"C:\Users\kuk\Downloads\B5+Typ B.2.docx" 

cmd = '{} /s /a {} /o {}'.format(soft,var1,var2)

subprocess.call(cmd)

Я не знаю, что не так, но не могу выполнить скрипт.

Любая помощь будет оценена!!

Что такое soft? var1? var2? (Кроме того, не переопределяйте встроенную функцию input Python с помощью переменной с тем же именем...)

ShlomiF 21.11.2022 10:45

Ах, это мой плохой. Я забыл изменить имена переменных. soft, var1, var2 - это не что иное, как exe, ввод, вывод соответственно.

Kuladeep 21.11.2022 11:35
Скраппинг поиска Apple App Store с помощью Python
Скраппинг поиска Apple App Store с помощью Python
📌Примечание: В этой статье я покажу вам, как скрапировать поиск Apple App Store и получить точно такой же результат, как на Apple iMac, потому что...
Редкие достижения на Github ✨
Редкие достижения на Github ✨
Редкая коллекция доступна в профиле на GitHub ✨
Мутабельность и переработка объектов в Python
Мутабельность и переработка объектов в Python
Объекты являются основной конструкцией любого языка ООП, и каждый язык определяет свой собственный синтаксис для их создания, обновления и...
Другой маршрут в Flask Python
Другой маршрут в Flask Python
Flask - это фреймворк, который поддерживает веб-приложения. В этой статье я покажу, как мы можем использовать @app .route в flask, чтобы иметь другую...
14 Задание: Типы данных и структуры данных Python для DevOps
14 Задание: Типы данных и структуры данных Python для DevOps
Проверить тип данных используемой переменной, мы можем просто написать: your_variable=100
Python PyPDF2 - запись метаданных PDF
Python PyPDF2 - запись метаданных PDF
Python скрипт, который будет записывать метаданные в PDF файл, для этого мы будем использовать PDF ридер из библиотеки PyPDF2 . PyPDF2 - это...
1
2
88
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ваш вопрос неоднозначен. если я правильно понял, вы можете использовать os.system

Os.system — это функция, которая выполняет команды из консоли.

import os

os.system('"C:\Program Files (x86)\temp\FL.B5.exe" /s /a "C:\Users\kuk\Downloads\B5+Typ B.2.asc" /o "C:\Users\kuk\Download\B5+Typ B.2.docx"')

Не используйте input в качестве имени переменной. Это встроенная функция Python.

Ответ принят как подходящий

Метод subprocess.call принимает список в качестве аргумента. При работе с задачами выполнения оболочки мне нравится использовать библиотеку shlex для цитирования параметров и разделения команд в список.

Примечание. Мне не приходилось выполнять сценарии в Windows около 12 лет, поэтому я не уверен, насколько shlex совместим с платформой.

import shlex
import subprocess as sp

exe = r"C:\Program Files (x86)\temp\FL.B5.exe"
in_file = r"C:\Users\kuk\Downloads\B5+Typ B.2.asc"
out_file = r"C:\Users\kuk\Downloads\B5+Typ B.2.docx" 

params = tuple([shlex.quote(p) for p in (exe, in_file, out_file)])

command =  f'%s /s /a %s /o %s' % params

sp.call(shlex.split(command))

Обязательно ли использовать метод shlex.quote()? Это делает команду с использованием переменных или что-то еще? Почему бы нам не использовать простое преобразование строк и не передать эту строку в shlex.split()?

Kuladeep 21.11.2022 11:38
shlex.quote() может не понадобиться в вашем случае использования, но это шаблон, который я привык использовать, чтобы убедиться, что каждая часть правильно указана для использования в оболочке.
Dan Nagle 21.11.2022 11:57

Другие вопросы по теме