Python cmd停止终端显示stderr或stdout

Python cmd停止终端显示stderr或stdout,python,python-2.7,cmd,Python,Python 2.7,Cmd,原始标题:PythonCMD停止终端显示正在运行的行 我不能像平时那样研究这个问题,因为我不确定用什么合适的术语来描述我试图阻止的事情。(答案是stderr) 我已经编写了一个小python程序,它用本地软件运行文件。我正在使用Linux,因此命令是 opener=“open”如果sys.platform==“darwin”否则“xdg open” 子流程调用([opener,winner]) 其中winner是要打开的文件路径。作为一个接口,我使用CMD包。一切正常,如预期 我遇到的问题是在终

原始标题:PythonCMD停止终端显示正在运行的行

我不能像平时那样研究这个问题,因为我不确定用什么合适的术语来描述我试图阻止的事情。(答案是stderr)

我已经编写了一个小python程序,它用本地软件运行文件。我正在使用Linux,因此命令是

opener=“open”如果sys.platform==“darwin”否则“xdg open”
子流程调用([opener,winner])

其中winner是要打开的文件路径。作为一个接口,我使用CMD包。一切正常,如预期

我遇到的问题是在终点站。这就是我不确定该怎么称呼它的地方。运行
子进程调用
后,终端将显示打开文件的操作。它最终大约有60行,这取决于它打开的内容

我有三个问题:

  • 处理文件打开时的终端线叫什么

  • 我怎样才能阻止这些台词出现。我不需要具体的代码,只是一个方向去。我意识到python可能无法做到这一点,但我希望能够做到

  • 这是一个关于python包的一般性问题。该公司表示,这“对于测试工具、管理工具和原型非常有用,这些工具和原型稍后将封装在更复杂的接口中。”但它没有提供其他接口选项。我是否遇到了cmd的限制?如果是这样,我应该使用什么命令行接口包来解决这个问题。(不幸的是,我认为我在python方面还不够好,无法制作一个完整的gui)

  • def start_winner(lst):#从列表中启动文件链接或随机链接
    获胜者=随机选择(lst)
    opener=“open”如果sys.platform==“darwin”否则“xdg open”
    
    子流程调用([opener,winner])
    这个答案是100%@PadraicCunningham。如果他给出了答案,就投他的一票

    问题的答案如下:

    1) 命令输出是stderr(很可能是stdout)。如果您不确定差异,以及

    2) 我将启动功能改为

    def start_winner(lst):#从列表中启动文件链接或随机链接
    获胜者=随机选择(lst)
    f=打开(os.devnull,“w”)
    opener=“open”如果sys.platform==“darwin”否则“xdg open”
    子流程调用([opener,winner],stdout=f,stderr=f)


    3) 不,CMD不是问题所在,我对输出的理解不足才是问题所在

    将stdout重定向到dev/null以禁止输出您尝试过的子流程。调用([opener,winner],shell=True)?@PadraicCunningham我尝试了失败。我得到一个错误AttributeError:Cmd实例没有调用方法(这是我的错误)。我正在尝试先做class(cmd.cmd([[[path]]]):文档上说是这样。@padraiccanningham如何添加参数。我原以为你是这个意思,但我一直没弄明白。添加
    调用([opener,winner],stdout=open(os.devnull,“w”))
    不起作用您需要添加您正在使用的代码,我看不出您是如何使用cmd库的。使用call重定向stdout应该确实有效,除非实际上您看到的是stderr,在这种情况下
    f=open(os.devnull,“w”);呼叫(([opener,winner],stdout=f,stderr=f)