zoukankan      html  css  js  c++  java
  • python commands包不支持windows环境与如何在windows下使用的简易方法

    commands模块不支持windows环境,让我们来看看。

    >>> import commands
    >>> print commands.getoutput('dir')
    '{' 不是内部或外部命令,也不是可运行的程序
    或批处理文件。
    >>> 
    

     查看commands.getoutput的源代码:

    def getoutput(cmd):
        """Return output (stdout or stderr) of executing cmd in a shell."""
        return getstatusoutput(cmd)[1]
    

     这个函数调用的是commands.getstatusoutput()函数,那查看下commands.getstatusoutput的源代码

    def getstatusoutput(cmd):
        """Return (status, output) of executing cmd in a shell."""
        import os
        pipe = os.popen('{ ' + cmd + '; } 2>&1', 'r')
        text = pipe.read()
        sts = pipe.close()
        if sts is None: sts = 0
        if text[-1:] == '
    ': text = text[:-1]
        return sts, text

    从commands.getstatusoutput的代码可以看出,命令运行的时候改变成了'{ ' + cmd + '; } 2>&1',这是在linux下运行的命令,windows不支持。
    所以,commands模块不支持windows环境。

    那如何让它支持windows环境呢?

    我的建议:

    1、新建一个模块,copy commands的内容到其中

    2、将getstatusoutput函数下的 '{ ' + cmd + '; } 2>&1' 改为cmd

    当然getstatushan函数仍然存在问题,如果要使用的话,请参考windows环境进行修改。

    总结,以上是我的一点心得,如果存在问题,请联系我。

  • 相关阅读:
    C#枚举(一)使用总结以及扩展类分享
    .NET使用DinkToPdf将HTML转成PDF
    .NET使用MailKit进行邮件处理
    socket+django
    mysql 修改编码格式
    django中Model表的反向查询
    浅谈 session 会话的原理
    浅谈 django Models中的跨表
    django Models 常用的字段和参数
    encoding/xml
  • 原文地址:https://www.cnblogs.com/tangdouguard/p/4290589.html
Copyright © 2011-2022 走看看