Получение ввода от пользователя, затем запуск процесса с подпроцессом - PullRequest
0 голосов
/ 04 марта 2019

Я хочу иметь программу, которая принимает ввод пользователя и затем пытается открыть этот файл / программу.Я могу сделать это с subprocess.call ([файл]), но это работает только на базовых программах, таких как блокнот.Я хочу также иметь возможность передавать agruments в программу, если есть какие-либо аргументы.Например:

Простая программа (что я получил / попробовал)

import subprocess
file = input()
subprocess.call([file])

Сложная программа (пробовал этот код, но выдает ошибку, поскольку такой файл не найден)

import subprocess
file = input("File Name: ") #File = qemu-system-x86_64 -boot order=d F:/arch
subprocess.call([file]) # Tries to start qemu with -boot order=d F:/arch args

Поэтому я попытался найти ответы на эти вопросы, но все, что я узнал, чтобы передать аргументы программе, у вас это должно быть вот так ([file, args]).Итак, во втором примере, когда я пытаюсь запустить программу с аргументами, я получаю сообщение об ошибке, файл не найден.Также я не могу использовать модуль os специально os.system (), так как у меня нет доступа к cmd

1 Ответ

0 голосов
/ 04 марта 2019

В Windows вы можете использовать одностроковую версию для первого параметра:

subprocess.call(file)

, поскольку базовый системный вызов использует полную командную строку.В системе Posix вы должны использовать правильно разделенный список.Модуль shlex - удобный способ для этого:

import subprocess
import shlex
file = input("File Name: ") #File = qemu-system-x86_64 -boot order=d F:/arch
subprocess.call(shlex.split(file))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...