Python cmd停止终端显示stderr或stdout
原始标题:PythonCMD停止终端显示正在运行的行 我不能像平时那样研究这个问题,因为我不确定用什么合适的术语来描述我试图阻止的事情。(答案是stderr) 我已经编写了一个小python程序,它用本地软件运行文件。我正在使用Linux,因此命令是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包。一切正常,如预期 我遇到的问题是在终
opener=“open”如果sys.platform==“darwin”否则“xdg open”
子流程调用([opener,winner])
其中winner是要打开的文件路径。作为一个接口,我使用CMD包。一切正常,如预期
我遇到的问题是在终点站。这就是我不确定该怎么称呼它的地方。运行子进程调用
后,终端将显示打开文件的操作。它最终大约有60行,这取决于它打开的内容
我有三个问题:
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)