Python
python 2.7 和 3.6 中命令庫的替代方案
那裡沒有收到任何答案,所以在這裡交叉發布。
我只是想知道一個替代方案
import commands
commands.getoutput()
命令庫。
有沒有辦法使用 os 或 subprocess 之類的東西來做到這一點?
commands
已棄用,應替換為subprocess
呼叫。替代品commands.getoutput()
是subprocess.Popen().communicate()
:import subprocess import shlex command = shlex.split('/bin/ls -l -a -h') process = subprocess.Popen(command, stdout=subprocess.PIPE) stdout, stderr = process.communicate()
bandit
可能仍然會給你一個低嚴重性的問題,因為你仍然使用subprocess
本身不安全的東西作為呼叫 shell 的任何東西,但這是不可避免的。將剩餘的警告視為對程式碼中潛在不安全性的提醒 - 根據您在 shell 中實際呼叫的內容,您必須自己進行檢查 - 它是硬編碼在字元串常量中的命令,還是使用者輸入,或者取決於呼叫程式碼的變數?在任何情況下,總是建議進行清理,Python 有相應的pipes
模組。