首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让python3x读取来自karma的终端输出?

如何让python3x读取来自karma的终端输出?
EN

Stack Overflow用户
提问于 2017-02-18 13:25:14
回答 1查看 40关注 0票数 0

我做了一个脚本,作为劳彻的因果报应和slimerjs。

它是这样的:

代码语言:javascript
复制
    # Load a Karma server
        print('\nKarma is loading...\n')
        karma = subprocess.Popen('./karma start', shell=True)

        # delays for 2 seconds for waiting Karma server
        time.sleep(2)

        # Load a headless SlimerJS that points to Karma server
        slimerjs = subprocess.Popen(
            'xvfb-run slimerjs slimerjs-cfg.js > slimerjs.log', shell=True)
        print('\nSlimerJS is running...\n')

它是有效的,但是有一个很大的问题,就是2秒的任意延迟。我需要它只在karma真正加载后调用slimerjs,这就是我使用延迟的原因。但是karma在控制台上给了我这样的输出:

代码语言:javascript
复制
18 02 2017 03:11:12.176:WARN [karma]: No captured browser, open http://localhost:9876/

18 02 2017 03:11:12.190:INFO [karma]: Karma v1.3.0 server started at http://localhost:9876/

因此,我可以使用此输出来替换2秒的任意延迟,并且我还需要获取输出以了解因果报应从何处开始

我需要获取服务器路径/位置(http://localhost:9876/),以说明karma正在运行的slimerjs。

我尝试了一些这样的命令:

代码语言:javascript
复制
p = subprocess.Popen(["./karma start"], stdout=subprocess.PIPE)
        out, err = p.communicate()

但是python给了我一个错误消息:

代码语言:javascript
复制
FileNotFoundError: [Errno 2] No such file or directory: './karma start'

有什么帮助吗?

EN

回答 1

Stack Overflow用户

发布于 2017-02-18 13:31:32

如果没有shell=True,您需要Popen调用如下所示:

代码语言:javascript
复制
p = subprocess.Popen(["./karma", "start"], stdout=subprocess.PIPE)

另外,要获取该网站:

代码语言:javascript
复制
location = p.stdout.split(' ')[-1]

如果您使用的是python版本>= 3.5,那么您可以使用更新的、更高级的Popen版本subprocess.run。Docs here

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42311391

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档