我试图创建一个基本函数,该函数将call()
从subprocess
模块传递给程序的文件名和参数。文件名和参数是变量。当我使用call()
时,它接受变量,但被调用程序读取包含"
的字符串。将变量用作Python 2.7.x中子进程调用的命令的参数
这里是有问题的代码:
from subprocess import call
def mednafen():
print "Loading "+romname+"..."
call(["mednafen", args, romname])
print "Mednafen closed."
romname="kirby.zip"
args="-fs 1"
mednafen()
我预计这将执行
mednafen -fs 1 kirby.zip
而是它似乎解释变量的字符串作为本:
mednafen "-fs 1" "kirby.zip"
由于这个,mednafen无法运行,因为它无法解析以开头的参数。 如果我使用shell=True
,它的工作方式与预期的一样,但该功能显然非常不鼓励,因为它很容易被利用?
call("mednafen "+ args +" "+romname+"; exit", shell=True)
有没有办法做到这一点不使用shell=True
格式?
尝试用str替换参数(args) – XZ6H
谢谢,我给了它一个去,但它似乎没有任何效果。 call()仍然用引号解释变量。 –
你的代码实际上并没有传入参数,但我想我们可以猜出你的意思。 – tripleee