Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将两个单独的脚本打印到同一控制台窗口_Python_Console_Tkinter_Call_Subprocess - Fatal编程技术网

Python 将两个单独的脚本打印到同一控制台窗口

Python 将两个单独的脚本打印到同一控制台窗口,python,console,tkinter,call,subprocess,Python,Console,Tkinter,Call,Subprocess,我正在用python编写一系列大型自动化测试,我想使用一个带有gui的主脚本来调用我想要运行的特定测试 我正在使用subprocess.call(path,shell=True),其中path是所选测试的位置和名称。这很好,但是控制台只输出主脚本中的打印语句。每个自动化测试都有一个输出,我希望在测试运行时查看该输出 我可以将这些输出打印到同一个控制台,还是强制它打开一个新的控制台窗口 编辑1:我想我应该核实一下。一旦启动了测试脚本,我并不真正关心主脚本的输出 编辑2:这是当我设置shell=Fa

我正在用python编写一系列大型自动化测试,我想使用一个带有gui的主脚本来调用我想要运行的特定测试

我正在使用subprocess.call(path,shell=True),其中path是所选测试的位置和名称。这很好,但是控制台只输出主脚本中的打印语句。每个自动化测试都有一个输出,我希望在测试运行时查看该输出

我可以将这些输出打印到同一个控制台,还是强制它打开一个新的控制台窗口

编辑1:我想我应该核实一下。一旦启动了测试脚本,我并不真正关心主脚本的输出

编辑2:这是当我设置shell=False时发生的回溯错误

Exception in Tkinter callback 
Traceback (most recent call last): 
File "C:\Python27\lib\lib-tk\Tkinter.py", line 1470, in __call__
return self.func(*args)
File "C:\Documents and Settings\CDM\Desktop\workspace\Master.py", line 50, in execute_test
call(path, shell=False)
File "C:\Python27\lib\subprocess.py", line 524, in call
return Popen(*popenargs, **kwargs).wait()
File "C:\Python27\lib\subprocess.py", line 711, in __init__
errread, errwrite)
File "C:\Python27\lib\subprocess.py", line 948, in _execute_child
startupinfo)
WindowsError: [Error 193] %1 is not a valid Win32 application 

我认为您必须使用第三个脚本来接收这两个输入,然后继续使用主脚本。您的问题是
shell=True
,为什么需要它?@Ccheese4将回溯添加到问题中,重要的部分被删除。您可能只需要
[sys.executable,'C:/fred/hello.py']
(或类似内容)听你指挥
shell=True
通常仅用于文件关联。默认情况下,它应打印到同一控制台。您可以使用
subprocess.check\u调用([sys.executable,path])
在同一控制台中运行。或
子进程。选中调用(“cmd/c start cmd/c”.split()+[sys.executable,path])
在新窗口中启动。