python操作命令行
时间: 2023-10-17 18:22:59 浏览: 43
Python可以通过`os`模块和`subprocess`模块操作命令行。
`os`模块的常用函数:
- `os.system(command)`:执行命令并返回状态码,成功返回0,失败返回非零值。
- `os.popen(command, mode='r', buffering=-1)`:执行命令并返回一个类文件对象,可以通过该对象读取命令输出的结果。
- `os.getcwd()`:获取当前工作目录。
- `os.chdir(path)`:改变当前工作目录为指定路径。
- `os.listdir(path)`:返回指定路径下的文件和目录列表。
示例代码:
```python
import os
# 执行命令并返回状态码
os.system('ls -l')
# 执行命令并返回输出结果
result = os.popen('ls -l').read()
print(result)
# 获取当前工作目录
current_dir = os.getcwd()
print(current_dir)
# 改变当前工作目录
os.chdir('/tmp')
# 返回指定路径下的文件和目录列表
dir_list = os.listdir('.')
print(dir_list)
```
`subprocess`模块的常用函数:
- `subprocess.run(args, *, stdin=None, input=None, stdout=None, stderr=None, capture_output=False, shell=False, cwd=None, timeout=None, check=False, encoding=None, errors=None, text=None, env=None, universal_newlines=None)`:执行命令并返回一个`CompletedProcess`对象,可以通过该对象访问命令输出的结果和状态码。
- `subprocess.Popen(args, bufsize=-1, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=True, shell=False, cwd=None, env=None, universal_newlines=None, startupinfo=None, creationflags=0)`:执行命令并返回一个`Popen`对象,可以通过该对象读取命令输出的结果。
- `subprocess.check_output(args, *, stdin=None, stderr=None, shell=False, universal_newlines=False)`:执行命令并返回输出结果,如果执行失败会抛出异常。
示例代码:
```python
import subprocess
# 执行命令并返回CompletedProcess对象
result = subprocess.run(['ls', '-l'], capture_output=True)
print(result.returncode)
print(result.stdout)
# 执行命令并返回Popen对象
p = subprocess.Popen(['ls', '-l'], stdout=subprocess.PIPE)
result = p.stdout.read()
print(result)
# 执行命令并返回输出结果
result = subprocess.check_output(['ls', '-l'])
print(result)
```