如何从Python启动命令窗口

2024-04-26 02:38:34 发布

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

我想在Windows上使用Python 2.6来启动几个单独的命令窗口,每个窗口都运行自己的Python脚本。目的是:这些是客户机,我正试图用来自多个准独立客户机的请求加载服务器。

在运行期间或运行之后,我不需要与客户机通信,但我需要向每个客户机发送不同的命令行arg,并且我希望每个客户机的输出在其自己的“控制台”中滚动。

在DOS命令行中,“start”命令执行我想要的操作。我可以:

start perf_test.py 2

或者

start cmd /c perf_test.py 3

或者

start cmd /c python perf_test.py 4

(如果您的*.py文件的“文件关联”设置正确,这些设置将对您有效。如果你需要帮助,还有其他线索。或者,使用python exe和/或脚本的完整路径。)

我的挑战是:如何从Python获得相同的效果?

使用subprocess库,我尝试了如下变体:

from subprocess import *
p = Popen(["perf_test.py", "4"], shell=True, stdin=PIPE)

但即使使用shell=True,输出也会在我已经运行的窗口中混合。添加stdout=PIPE可以停止此操作,但随后我必须读取p.stdout或使用p.communicate()。在Popen中添加“cmd”得到的结果大致相同:

p = Popen(["cmd", "/c", "perf_test.py", "4"], shell=True, stdin=PIPE)

以上这些都没有达到我想要的效果,即:“弹出此脚本的一个新的、不同的窗口,并在其自己的控制台中查看其输出滚动”(因为我真的想并行运行其中的N个客户端)。

另一件事我转向几乎也行。

import os
os.startfile("perf_test.py")

这将立即返回,并弹出一个实际的剂量箱。耶!成功!也就是说,直到我试图添加一个参数。这失败了:

os.startfile("perf_test.py 5")

出现错误“系统找不到指定的文件”。。。因为它正在文件名中添加“[SPACE]5”。(参数的目的是每个“perf_test”都需要有一个分配的ID,以便它们作为不同的实例到达服务器。)

我考虑过的其他方法,但由于种种原因,我确实不喜欢:

  • 在自己的线程中运行每个“性能测试”。(但我真的想在自己的控制台中看到每个输出。)
  • 用Tk制作我自己的伪控制台。(图中我只会遇到不同的线程问题。)
  • 动态地动态地编写一个.BAT文件,其中包含“start perf_test.py 1”、“start perf_test.py 2”等行,然后使用Popenstartfile启动该.BAT文件。

我希望最后一个会有用。。。如果我不能让Python脚本直接执行,我想这是我最后的选择了。

感谢您的输入/见解!


Tags: 文件pytest命令脚本cmdtrue客户机
3条回答

您可以使用:

import os
os.system("start python perf_test.py 5")

我也有同样的问题。用这种方法解决了这个问题。 你应该尝试:

import os
os.system('chrome.exe') # open Chrome (.exe  file)

代码:

user = raw_input("welcome to cmd: ")
def print_perms(chars, minlen, maxlen): 
    for n in range(minlen, maxlen+1): 
        for perm in itertools.product(chars, repeat=n): 
            print(''.join(perm)) 

相关问题 更多 >