本博文整理自博友文章
例子都在ubuntu 18.04上使用python3.6進行測試。
版本上的說明:python2.4之後有subprocess包,python3.5之後官方建議使用subprocess.run()
1. 不捕捉輸出(這種可以用在只執行操作,不需要結果的情況,如建立軟連線)
函式:subprocess.run(args, *, stdin=none, input=none, stdout=none, stderr=none, shell=false, timeout=none, check=false, universal_newlines=false)
>>> subprocess.run("ls -l", shell=true) # doesn't capture output
total 4
drwxr-xr-x 2 chenpan lobeseg 4096 5月 26 16:14 doc
-rw-r--r-- 1 chenpan lobeseg 483 6月 25 10:27 init.sh
-rw-r--r-- 1 chenpan lobeseg 1070 5月 26 16:14 license.txt
completedprocess(args=['ls', '-l'], returncode=0)
>>> subprocess.run(["ls", "-l"]) # doesn't capture output
total 4
drwxr-xr-x 2 chenpan lobeseg 4096 5月 26 16:14 doc
-rw-r--r-- 1 chenpan lobeseg 483 6月 25 10:27 init.sh
-rw-r--r-- 1 chenpan lobeseg 1070 5月 26 16:14 license.txt
completedprocess(args='ls -l', returncode=0)
2. 捕捉輸出,以下給出三種實現
subprocess.getoutput(cmd)
例子:>>> ret = subprocess.getoutput('ls -l')
>>> print(ret)
total 4
drwxr-xr-x 2 chenpan lobeseg 4096 5月 26 16:14 doc
-rw-r--r-- 1 chenpan lobeseg 483 6月 25 10:27 init.sh
-rw-r--r-- 1 chenpan lobeseg 1070 5月 26 16:14 license.txt
subprocess.getstatusoutput(cmd)
例子:>>> retcode, output = subprocess.getstatusoutput('ls -l')
>>> print(retcode)
>>> print(output)
total 4
drwxr-xr-x 2 chenpan lobeseg 4096 5月 26 16:14 doc
-rw-r--r-- 1 chenpan lobeseg 483 6月 25 10:27 init.sh
-rw-r--r-- 1 chenpan lobeseg 1070 5月 26 16:14 license.txt
class 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=false,
startup_info=none, creationflags=0, restore_signals=true, start_new_session=false, pass_fds=())
例子:>>> import subprocess
>>> p = subprocess.popen('ls -l', stdout=subprocess.pipe, shell=true)
>>> print(p.stdout.read())
b'total 4\ndrwxr-xr-x 2 chenpan lobeseg 4096 5\xe6\x9c\x88 26 16:14 doc\n-rw-r--r-- 1 chenpan lobeseg 483 6\xe6\x9c\x88 25 10:27 init.sh\n-rw-r--r-- 1 chenpan lobeseg 1070 5\xe6\x9c\x88 26 16:14 license.txt\n'
在python中使用websocket
介紹一款很帥的外掛程式autobahnpython,通過它可以在python中很方便的使用websocket進行通訊 基於twisted框架 這個外掛程式真正強大的地方是它提供了乙個 發布 訂閱模式,具體內容有空再寫,先簡單介紹一下如何建立傳統的連線。建立伺服器 必須的模組 from twisted...
在Python中使用 slots
這篇文章主要介紹了在python中使用 slots 方法的詳細教程,slots 方法是python的乙個重要內建類方法,基於python2.x版本,需要的朋友可以參考下 正常情況下,當我們定義了乙個class,建立了乙個class的例項後,我們可以給該例項繫結任何屬性和方法,這就是動態語言的靈活性。...
with語句在Python中使用
引言 with語句生於python2.5,通過 from future import with statement 匯入後使用 2.6以後無需匯入直接使用 with 語句適用於對資源進行訪問的場合,確保不管使用過程中是否發生異常都會執行必要的 清理 操作,釋放資源 用途 最常用的兩個地方,檔案使用後...