Python调用shell命令常用方法(4种)

  • Post category:Python

以下是详细讲解“Python调用shell命令常用方法(4种)”的完整攻略,包含两个示例说明。

1. 使用os.system()函数

在Python,我们可以使用os.system()函数来调用shell命令。os.system()函数的语法如下:

os.system(command)

其中command参数是要执行的shell命令。

以下是一个使用os.system()函数调用shell命令的示例:

import os

os.system("ls -l")

在以上示例中,我们使用os.system()函数调用了ls -l命令,该命令会列出目录下的所有文件和文件夹,并显示详细信息。

2. 使用subprocess.run()函数

在Python 3.5及以上版本中,我们可以使用subprocess.run()函数来调用shell命令。sub.run()函数的语法如下:

subprocess.run(args, *, stdin=None, input=None, stdout=None, stderr=None, shell=False, timeout=None, check=False, encoding=None, errors=None, env=None, universal_newlines=None, cwd=None, start_new_session=False, pass_fds=(), *, group=None, killpg=None)

其中,args参数是要执行的shell命令,可以是字符串或列表。

以下是一个使用subprocess.run()函数调用shell命令的示例:

import subprocess

result = subprocess.run(["ls", "-l"], stdout=subprocess.PIPE)
print(result.stdout.decode("utf-8"))

在以上示例中,我们使用subprocess.run()函数调用了ls -l命令,该命令会列出当前目录下的所有文件和文件夹,并显示详细信息。我们将stdout参数设置为subprocess.PIPE,以便获取命令的输出结果。然后,我们使用decode()方法将输出结果转换为字符串,并使用print()函数输出结果。

3. 使用os.popen()函数

在Python中,我们可以使用os.popen()函数来调用shell命令,并获取命令的输出结果。os.popen()的语法如下:

os.popen(command[, mode[, bufsize]])

其中,command参数是要执行的shell命令,mode参数是打开文件的模式,可以是'r'(读取模式)或'w'(写入模式),bufsize参数是缓冲区大小。

以下是一个使用os.popen()函数调用shell命令的示例:

import os

output = os.popen("ls -l").read()
print(output)

在以上示例中,我们使用os.popen()函数调用了ls -l命令,该命令会列出当前目录下的所有文件和文件夹,并显示详细信息。然后,我们使用read()方法获取命令的输出结果,并使用print()函数输出结果。

4. 使用subprocess.Popen()函数

在Python中,我们可以使用subprocess.Popen()函数来调用shell命令,并获取命令的输出结果。subprocess.Popen()函数的语法如下:

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, restore_signals=True, start_new_session=False, pass_fds=(), *, encoding=None, errors=None)

其中,args参数是要执行的shell命令,可以是字符串或列表。

以下是一个使用subprocess.Popen()函数调用shell命令的示例:

import subprocess

process = subprocess.Popen(["ls", "-l"], stdout=subprocess.PIPE)
output, error = process.communicate()
print(output.decode("utf-8"))

在以上示例中,我们使用subprocess.Popen()函数调用了ls -l命令,该命令会列出当前目录下的所有文件和文件夹,并显示详细信息。我们将stdout参数设置为subprocess.PIPE,以便获取命令的输出结果。然后,我们使用communicate()方法获取命令的输出结果和错误信息,并使用decode()方法将输出结果转换为字符串,并使用print()函数输出结果。

5. 结论

在Python中,我们可以使用os.system()subprocess.run()os.popen()subprocess.Popen()函数来调用shell命令。其中,os.system()函数和os.popen()函数比较简单,但是不能获取命令的输出结果。subprocess.run()函数和subprocess.Popen()函数比较灵活,可以获取命令的输出结果,但是使用起来稍微复杂一些。根据实际需求,我们可以选择适合自己的方法来调用shell命令。