从用户那里获取输入,然后使用子流程

时间:2019-03-04 02:16:02

标签: python python-3.x subprocess

我想要一个程序,该程序接受用户的输入,然后尝试打开该文件/程序。我可以使用subprocess.call([file])来做到这一点,但这仅适用于诸如记事本之类的基本程序。如果有任何参数,我还希望能够将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])。因此,在第二个示例中,当我尝试运行带有参数的程序时,出现未找到文件的错误。另外,由于我无法访问cmd

,因此我不能使用os模块,特别是os.system()。

1 个答案:

答案 0 :(得分:1)

在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))