平方X

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1928|回复: 0

python 执行 dos 命令

[复制链接]

414

主题

709

帖子

3602

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3602
QQ
发表于 2017-9-30 12:44:14 | 显示全部楼层 |阅读模式
[md]

# 0x01 os.system(command)
[官方文档](https://docs.python.org/3.6/library/os.html#os.system)

# 0x02 os.popen(cmd, mode=’r’, buffering=-1)
[官方文档](https://docs.python.org/3.6/library/os.html#os.popen)

# 0x03 subprocess.call
## 3.1 [Older high-level API](https://docs.python.org/3.6/libr ... lder-high-level-api)
* subprocess.call(args, *, stdin=None, stdout=None, stderr=None, shell=False, cwd=None, timeout=None)
* subprocess.check_call(args, *, stdin=None, stdout=None, stderr=None, shell=False, cwd=None, timeout=None)
* subprocess.check_output(args, *, stdin=None, stderr=None, shell=False, cwd=None, encoding=None, errors=None, universal_newlines=False, timeout=None)

## 3.2 [Replacing Older Functions with the subprocess Module](https://docs.python.org/3.6/libr ... e-subprocess-module)
## Replacing os.system()
```
sts = os.system("mycmd" + " myarg")
# becomes
sts = call("mycmd" + " myarg", shell=True)
```

# 0x04 subprocess.Popen
[官方文档](https://docs.python.org/3.6/libr ... ml#subprocess.Popen)

# 0x05 总结
简单说就是有的只能获取结果码,有的可以获取输入输出。  
但是我的git clone 还是不能实现,应该是我没有仔细看文档,不想再复杂了。
```

        cmd='git clone **项目'
        print(os.system(cmd))  # 0
        print(os.popen(cmd).readlines())  # []
        print(subprocess.call(cmd,shell=True))  # 0
        print(subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE,
                               universal_newlines=True).stdout.readlines())  # []
```
然后 help > ** 文件,都是成功的,但要注意 3.2 所说,shell=True,默认的False不能执行。
```
        cmd='help > **文件'
        print(os.system(cmd))  # 1
        print(os.popen(cmd).readlines())  # []
        print(subprocess.call(cmd,shell=True))  # 1
        print(subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE,
                               universal_newlines=True).stdout.readlines())  # []
```

# 0x06 python 调用 os.system 输出乱码
感谢[Wensent_H.《pycharm下 os.system执行命令返回有中文乱码》](http://blog.csdn.net/Wensent_H/article/details/77088623)

将全局编码设置了与系统一样即可。
> File > Settings > Editor > File Encodings > Global Encoding : GBK

[/md]
我是平方X~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|平方X ( 冀ICP备14018164号 )

GMT+8, 2024-4-25 09:34 , Processed in 0.116492 second(s), 21 queries .

技术支持:Powered by Discuz!X3.4  © 2001-2013 Comsenz Inc.

版权所有:Copyright © 2014-2018 平方X www.pingfangx.com All rights reserved.

快速回复 返回顶部 返回列表