操作系统到子流程.Popen或子流程。

2024-10-02 20:38:43 发布

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

我有一个如下函数,当我在CMD中执行python代码(SIMT是一个可执行文件)时,它工作得很好。然而,当我用py2exe构建可执行文件时,一个shell窗口很快就会出现和消失。所以我搜索发现我可以用子流程.popencreationflags=0x08000000。但它不起作用。在

这是我的职责

def Kill(SIMT):
  outfile1 = open('Kill.txt', 'w')
  outfile1.write('Kill' + '\r\n')
  outfile1.write('x')
  outfile1.close()
  os.system("type Kill.txt | testclient p . " + SIMT)
  os.remove('Kill.txt')

我把操作系统有:

^{pr2}$

另外,我需要shell=True吗?在


Tags: 函数代码txtcmd可执行文件os流程shell
1条回答
网友
1楼 · 发布于 2024-10-02 20:38:43

如果您希望shell为您安排管道,那么您确实需要使shell=True将第一个参数设置为字符串,就像您为os.system而不是一个列表一样。使用shell=False,list意味着执行作为列表第一项的程序,其他项作为它的命令行参数;因此不能让第一项包含|并期望shell代表您安排该管道。在

您的替代方法是自行安排“管道”或其等价物,例如,这里可能最简单,只需在Kill.txt上打开一个file对象作为subprocess.Popen的标准输入(stdin=),它只执行testclient(我相信type除了将文件读出到stdout之外什么也不做,所以这应该足以满足这个特定的用例)。在

相关问题 更多 >