带有subprocess.Popen的命令行参数

2024-09-27 09:30:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个GUI,如果我按下一个按钮“process”调用一个需要一个命令行参数的python脚本。所以我使用了子流程。Popen如下:

subprocess.Popen(['chbif /home/vnandak/Work/VS30_Cradle/SV000_sv000/cradle_vs30_dkaplus01_fwd_dl140606_fem140704_v00_mod1.bif'],shell=True)

chbif是.py脚本的别名

这很好,但现在我想通过使用tkFileDailog()模块中的askfilename()func浏览来选择一个文件。我该怎么做?

我想这样做:

def bifcall():
        name13= askopenfilename()
        subprocess.Popen(['chbif', name13],shell=True)

但是如果我使用它,它会抛出一个错误,说它没有一个命令行参数,即文件名


Tags: 命令行脚本truehome参数gui流程shell
2条回答

如果传递shell=True,第一个参数应该是一个字符串,它将被解释为shell将解释它。如果shell=False,那么第一个参数应该是一个列表,这样就绕过了shell。

下面是另一个问题的答案,可以很好地解释这个问题:https://stackoverflow.com/a/15109975/451201

因为如果使用shell=True,则只能使用一个字符串作为第一个参数。

尝试改变

subprocess.Popen(['chbif', name13],shell=True)

subprocess.Popen('chbif ' + name13,shell=True)

但出于安全原因,不建议使用shell=True(有关详细信息,请参见https://docs.python.org/2/library/subprocess.html#frequently-used-arguments)。

相关问题 更多 >

    热门问题