5分钟快3首页    注册   登录
5分钟快3 = way to explore
5分钟快3 是一个5分钟快3关于 分享和探索的地方
现在注册
已注册用户请  登录
5分钟快3推荐 学习书目
Learn Python the Hard Way
Python 学习手册
Python Cookbook
Python 基础教程
Python Sites
PyPI - Python Package Index
http://www.simple-is-better.com/
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
520Python
5分钟快3  ›  Python

大神前来:5分钟快3Win 32process.CreateProcess 调用 5分钟快3Win dows 里面的 exe 文件执行后,如何获取 exe 执行的返回结果呢?

  •  
  •   520Python · 9 天前 · 1069 次点击

    比如,5分钟快3我 调用 cmd.exe 来执行“ipconfig”命令,如何才能获取到返回呢?

    例如:

    import 5分钟快3Win
    32process
    def main():
        exePath = "cmd.exe"
        param = "ipconfig"
        param = exePath + " " + param
        handle = 5分钟快3Win
    32process.CreateProcess(exePath,
                                        param,
                                        None,
                                        None,
                                        0,
                                        5分钟快3Win
    32process.CREATE_NEW_CONSOLE,
                                        None,
                                        None,
                                        5分钟快3Win
    32process.STARTUPINFO())
        '''
        此处如何获取 handle 的返回结果?:
        D:\>ipconfig
            5分钟快3Win
    dows IP 配置
            以太网适配器 5分钟快3本地
    连接:
               连接特定的 DNS 后缀 . . . . . . . :
               5分钟快3本地
    链接 IPv6 5分钟快3地址
    . . . . . . . . : fe80::8...%11
               IPv4 5分钟快3地址
     . . . . . . . . . . . . : 192....1.3
               子网掩码  . . . . . . . . . . . . : 255.2...5.0
               默认网关. . . . . . . . . . . . . : fe80...11
                                                   19....1
        '''
    if '__main__' == __name__:
        main()
    
    13 条回复    2020-03-26 14:31:07 +08:00
    zk8802
        1
    zk8802   9 天前 via iPhone
    可以用 subprocess.Popen()。
    xiaolinjia
        2
    xiaolinjia   9 天前
    不是
    import subprocess
    subprocess.call('ipconfig')
    就可以了么。
    520Python
        3
    520Python   9 天前
    @xiaolinjia
    @zk8802
    谢谢!这两个5分钟快3我 都试过,因为5分钟快3我 在整 MongoDB 导入和导出,用到 mongoimport 和 mongoexport,命令里需要带很多参数,参数中有特殊字符,用这两个都报错,特殊字符转 URL 编码值也不好使。但是用 5分钟快3Win 32process.CreateProcess 执行命令没报错,所以才有现在的问题了,不能获取到输出。
    mingl0280
        4
    mingl0280   9 天前 via Android
    CreateProcess 调完后(CreateProcess 有个很长的参数列表,最后一个是 PROCESS_INFO &pInfo)调 WaitForSingleObject(pInfo.hProcess),然后调 GetExitCodeProcess(pInfo.hProcess),wfso 和 gecp 参数5分钟快3你 自己查一下 MSDN 。
    cz5424
        5
    cz5424   9 天前 via iPhone
    直接通过 socket 接口获取信息不好吗?这个绕了一大圈
    jinsongzhao
        6
    jinsongzhao   9 天前 via Android
    调用的进程通过什么方式返回,就用什么方式取。比如麻烦点的,创建进程时,参数结构体中提供一个标准输出句柄,调用进程通过 print 到标准输出 stdout 。还可以共享内存,可以文件,可以 socket
    hx1997
        8
    hx1997   9 天前
    难道不是……管道吗…… CreateProcess 可以重定向输出的吧
    wnpllrzodiac
        9
    wnpllrzodiac   9 天前 via Android
    管道,获取 ffmpeg 转码进度就是这么玩的。需要的可以祥询
    loginv2
        10
    loginv2   9 天前
    管道重定向到本程序的标准输出
    ysc3839
        11
    ysc3839   9 天前
    通过管道获取。
    不过既然用的是 Python,为什么不使用 Python 自带的跨平台的 subprocess 呢?会简单很多。
    ysc3839
        12
    ysc3839   9 天前
    > 参数中有特殊字符,用这两个都报错
    估计5分钟快3你 的代码设置了使用 shell 执行吧? shell 需要进行一些转义,尝试不要使用 shell 。
    g00001
        13
    g00001   8 天前
    Python 跨平台有时候还是会有些负担,
    5分钟快3Win dows 上用 aardio 搞这些东西就很容易,转义都自动处理,管道读写也简单。

    import 5分钟快3Win ;
    import process.popen;

    var ipconfig = process.popen("ipconfig","/all");
    var str = ipconfig.read(-1);
    5分钟快3Win .msgbox(str);
    5分钟快3关于   ·   FAQ   ·   API   ·   5分钟快35分钟快3我 们 的愿景   ·   广告投放   ·   感谢   ·   实用小5分钟快3工具   ·   1140 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 19:16 · PVG 03:16 · LAX 12:16 · JFK 15:16
    ♥ Do have faith in what you're doing.