[TOC]
## (1) os.system
仅仅在一个子终端运行系统命令,而不能获取命令执行后的返回信息
复制代码代码如下:
system(command) -> exit\_status
Execute the command (a string) in a subshell.
如果再命令行下执行,结果直接打印出来
复制代码代码如下:
\>>> os.system('ls')
04101419778.CHM bash document media py-django video
11.wmv books downloads Pictures python
all-20061022 Desktop Examples project tools
## (2) os.popen
该方法不但执行命令还返回执行后的信息对象
复制代码代码如下:
popen(command \[, mode='r' \[, bufsize\]\]) -> pipe
Open a pipe to/from a command returning a file object.
例如:
复制代码代码如下:
\>>>tmp = os.popen('ls \*.py').readlines()
\>>>tmp
Out\[21\]:
\['dump\_db\_pickle.py ',
'dump\_db\_pickle\_recs.py ',
'dump\_db\_shelve.py ',
'initdata.py ',
'\_\_init\_\_.py ',
'make\_db\_pickle.py ',
'make\_db\_pickle\_recs.py ',
'make\_db\_shelve.py ',
'peopleinteract\_query.py ',
'reader.py ',
'testargv.py ',
'teststreams.py ',
'update\_db\_pickle.py ',
'writer.py '\]
好处在于:将返回的结果赋于一变量,便于程序的处理。
## (3) 使用模块 subprocess
复制代码代码如下:
\>>> import subprocess
\>>> subprocess.call(\["cmd", "arg1", "arg2"\],shell=True)
获取返回和输出:
复制代码代码如下:
import subprocess
p = subprocess.Popen('ls', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
for line in p.stdout.readlines():
print line,
retval = p.wait()
## (4) 使用模块 commands
复制代码代码如下:
\>>> import commands
\>>> dir(commands)
\['\_\_all\_\_', '\_\_builtins\_\_', '\_\_doc\_\_', '\_\_file\_\_', '\_\_name\_\_', 'getoutput', 'getstatus','getstatusoutput', 'mk2arg', 'mkarg'\]
\>>> commands.getoutput("date")
'Wed Jun 10 19:39:57 CST 2009'
\>>>
\>>> commands.getstatusoutput("date")
(0, 'Wed Jun 10 19:40:41 CST 2009')
## (5) 使用Paramiko远程登陆服务器执行操作
## 注意:
当执行命令的参数或者返回中包含了中文文字,那么建议使用subprocess,如果使用os.popen则会出现下面的错误:
复制代码代码如下:
Traceback (most recent call last):
File "./test1.py", line 56, inmain()
File "./test1.py", line 45, in main
fax.sendFax()
File "./mailfax/Fax.py", line 13, in sendFax
os.popen(cmd)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 46-52: ordinal not inrange(128)
- python setup.py install报错
- from future import absolute_import 的使用
- celery 4以上的版本不支持windows解决办法
- 'ascii' codec can't decode byte 0xe4 in position 0: ordinal not in range(128)
- Python开发环境CentOS
- dosh-to-dock启动报错
- 创建了__init__.py文件,找不到模块
- CentOS切换中文输入法
- vncserver:1非正常中断后启动不来
- CentOS7安装搜狗输入法
- 安装第三方包常见报错
- Django for Professionals
- Chapter 1:Docker
- What is Docker?
- Containers vs. Virtual Environments
- Install Docker
- Docker Hello, World
- Django Hello, World
- Pages App
- Images, Containers, and the Docker Host
- Git
- Conclusion
- 设置pip/pyenv国内加速源
- 使用stackedit在github编辑文档
- python2.x与python3.x的区别
- python多任务实现
- python执行Linux命令的方法