python中执行linux命令(调用linux命令)_Python调用Linux bash命令
import subprocess as sup? # 以下注釋很多(為了自己以后不忘), 如果只是想在python中執行Linux命令, 看前5行就夠了
# 3.5版本之后官方推薦使用sup.run()
sup.run("ls -l", shell=True)? # 如果參數args是字符串, shell要設置為True
sup.run(("ls", "-l"))? # 推薦args為一個序列, list/tuple, 元組效率高
# 命令有返回值, 字符串類型(下同)
# sup.run(), call()等方法都是基于sup.Popen類的封裝, run()如果不夠用可以自己定義此類
pp = Popen(("ls", "-l"), stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, encoding="utf-8")? # 不輸出到控制臺
p2 = subprocess.Popen(['grep', 'data'], stdin=pp.stdout, stdout=subprocess.PIPE)? # 可以將上一個命令的輸出作為下一個命令的輸入, 不需要|(管道符)
try:
pp.wait(timeout=1)? ?#? 等待1秒, 如果子進程沒結束會報錯(pp類是新開一個進程, 并在子進程中執行bash命令)
pp.kill()? # 命令執行結束殺死子進程
# 有些阻塞的命令不要設置超時時間更不要殺死, 比如: 命令行python, 但是這樣的命令不用的時候, 還是要殺掉子進程
except:
pass
print(pp.stdout.read())? # 輸出命令查詢結果
# 著重說一下?municate()? # 另一種輸出結果的方式, 還可以再傳入命令input參數, 也可以再設置超時時間timeout
out, err = municate()? # 如果是像python這樣的阻塞命令, 可以用input="print(1)", 再執行python代碼
print(out)? # 輸出bash命令結果, 字符串類型
總結
以上是生活随笔為你收集整理的python中执行linux命令(调用linux命令)_Python调用Linux bash命令的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python tcp server分包_
- 下一篇: ssh mysql环境搭建 myecli