使用Python中的commands模块执行系统命令
在Python中,可以使用subprocess模块来执行系统命令并获取其输出。subprocess模块在Python 3中取代了commands模块。下面是一个使用subprocess模块执行系统命令的例子:
import subprocess # 执行系统命令 result = subprocess.run(['ls', '-l'], capture_output=True, text=True) # 获取命令的输出 output = result.stdout print(output)
在上面的代码中,我们使用subprocess.run函数执行了ls -l命令,并通过capture_output=True参数来捕获命令的输出。text=True参数告诉函数将输出以文本字符串的形式返回。最后我们将输出打印出来。
上面的代码输出的是当前目录下文件的详细信息。你可以替换ls -l为其他的系统命令来执行不同的操作。
subprocess.run函数还有其他的参数可以使用,比如check=True可以在命令执行过程中抛出异常,input可以指定命令的输入,shell=True可以使用shell语法等。
除了subprocess.run函数外,subprocess模块还提供了其他的函数和类来执行系统命令,比如subprocess.call函数、subprocess.check_output函数和subprocess.Popen类。
下面是一个使用subprocess.call函数执行系统命令的例子:
import subprocess # 执行系统命令 subprocess.call(['ls', '-l'])
上面的代码和前面的例子类似,只是使用了subprocess.call函数来执行命令。subprocess.call函数会阻塞程序的执行,直到命令执行完毕。
你还可以使用subprocess.check_output函数来获取命令的输出,如下所示:
import subprocess # 执行系统命令并获取输出 output = subprocess.check_output(['ls', '-l'], text=True) print(output)
上面的代码和前面的例子类似,只是使用了subprocess.check_output函数来获取命令的输出。该函数会在命令执行完毕后将输出作为字符串返回。
最后,你还可以使用subprocess.Popen类来执行系统命令,并在执行过程中获取命令的输出。下面是一个使用subprocess.Popen类执行系统命令的例子:
import subprocess # 执行系统命令并获取输出 process = subprocess.Popen(['ls', '-l'], stdout=subprocess.PIPE, text=True) # 读取命令的输出 output = process.stdout.read() # 打印输出 print(output)
上面的代码使用subprocess.Popen类执行命令,并将输出传给stdout参数,然后通过读取process.stdout属性获取输出。在实际使用中,你可能还需要使用process.communicate()方法来等待命令执行完毕,并获取命令的返回值。
总结一下,在Python中执行系统命令有多种方式,可以根据具体的需求选择适合的方式。subprocess模块提供了多个函数和类来执行系统命令,并获取命令的输出。对于简单的命令,可以使用subprocess.run函数或subprocess.call函数;对于需要获取命令输出的情况,可以使用subprocess.check_output函数或subprocess.Popen类。
