python執(zhí)行shell腳本的方法有哪些

小億
90
2023-10-13 21:33:47

在Python中執(zhí)行Shell腳本有以下幾種方法:

  1. 使用os.system()函數(shù):這個(gè)函數(shù)可以執(zhí)行shell命令,并返回命令的返回值。例如:
import os
os.system('ls -l')
  1. 使用subprocess.run()函數(shù):這個(gè)函數(shù)可以執(zhí)行shell命令,并返回一個(gè)CompletedProcess對(duì)象,其中包含命令的返回值、輸出和錯(cuò)誤輸出。例如:
import subprocess
result = subprocess.run('ls -l', shell=True)
print(result.returncode)  # 返回值
print(result.stdout)  # 輸出
print(result.stderr)  # 錯(cuò)誤輸出
  1. 使用subprocess.Popen()函數(shù):這個(gè)函數(shù)可以執(zhí)行shell命令,并返回一個(gè)Popen對(duì)象,可以通過(guò)該對(duì)象的方法獲取命令的返回值、輸出和錯(cuò)誤輸出。例如:
import subprocess
proc = subprocess.Popen('ls -l', shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout, stderr = proc.communicate()
print(proc.returncode)  # 返回值
print(stdout)  # 輸出
print(stderr)  # 錯(cuò)誤輸出
  1. 使用os.popen()函數(shù):這個(gè)函數(shù)可以執(zhí)行shell命令,并返回一個(gè)文件對(duì)象,可以通過(guò)該對(duì)象讀取命令的輸出。例如:
import os
output = os.popen('ls -l').read()
print(output)

這些方法可以根據(jù)具體的需求選擇使用,其中subprocess.run()subprocess.Popen()函數(shù)更加強(qiáng)大靈活,可以更好地處理命令的輸入、輸出和錯(cuò)誤輸出。

0