subprocess原始碼解讀

2021-09-27 05:22:40 字數 2363 閱讀 4672

subprocess模組原始碼介紹

subprocess.completedprocess類介紹

表示的是乙個已結束程序的狀態資訊.包含屬性如下:

示例in [3]: subprocess.run(["ls","-l","/dev/null"],stdout=subprocess.pipe)

out[3]: completedprocess(args=['ls', '-l', '/dev/null'], returncode=0, stdout=b'

crw-rw-rw- 1 root root 1, 3 12\xe6\x9c\x88 15 07:51 /dev/null\n')

- call()
in [4]: subprocess.call(['ls','-l'])

in [5]: subprocess.call('ls -l',shell=true)

in [6]: subprocess.call(['ls','-l'],stdout=subprocess.devnull)

out[6]: 0

in [7]: subprocess.call(['ls','-l','/services'])

- check_call()
in [9]: subprocess.check_call(['ls','-l'])

in [10]: subprocess.check_call('ls -l',shell=true)

in [11]: subprocess.check_call('ls -l /services',shell=true)

- check_output()
in [12]: ret = subprocess.check_output(['ls','-l'])

in [13]: print(ret) 返回的是位元組序列.

in [14]: ret = subprocess.check_output(['ls','-l'],universal_newlines=true)

in [15]: print(ret) 返回的是字串.

- getoutput()與getstatusoutput()
in [16]: ret = subprocess.getoutput('ls -l')

in [17]: print(ret)

正確情況下:

in [18]: retcode,output = subprocess.getstatusoutput('ls -l')

in [19]: print(retcode)

0in [20]: print(output)

錯誤情況下:

in [21]: retcode,output = subprocess.getstatusoutput('ls -l /test')

in [22]: print(retcode)

2in [23]: print(output)

ls: cannot access '/test': no such file or directory

subprocess.popen介紹

該類用於在乙個新的程序中執行乙個子程式.由於subprocess模組底層的程序建立和管理是由popen類來處理的. 可以通過subprocess.popen類提供的靈活的api來完成.

popen類的例項可呼叫的方法

popen.poll()

檢查命令是否已經執行結束.

wait(timeout=none)

等待子程序結束,返回狀態碼.

communicate()

與程序進行互動.

send_signal(signal)

傳送指定的訊號給這個子程序

terminate()

停止該子程序.

kill()

殺死該子程序.

示例

in [25]: p = subprocess.popen('df -ht',stdout=subprocess.pipe,shell=true)

in [26]: print(p.stdout.read())

in [2]: p1 = subprocess.popen(['df','-th'],stdout=subprocess.pipe)

in [3]: p2 = subprocess.popen(['grep','dev'],stdin=p1.stdout,stdout=subprocess.pipe)

in [4]: out,err = p2.communicate()

in [5]: print(out)

openTLD 原始碼解讀

首先是run tld 在其次就是tldexample 最後到了初始化函式tldinit 第乙個比較關鍵的函式 bb scan 將影象網格化,將首先 scale 1.2.10 10 21 個規格 在每個規格上打網格 這個函式有乙個比較重要的方法 ntuples 就是重複 因為網格上的點很多點有相同的x...

thinkphp原始碼解讀

thinkphp原始碼解讀 thinkphp原始碼的根目錄下是 index.php,是系統預設的 主頁,index.php中首先檢測的是 php執行環境,如果php版本小於 5.3.0則退出執行,定義是否為除錯模式,定義應用目錄,引入入口檔案。thinkphp是整個框架的入口檔案,在thinkphp...

HashMap原始碼解讀

一 建立乙個hashmap都做了哪些工作?mapmap new hashmap hahmap無參構造方法 public hashmap 可以看到設定了載入因子 預設0.75 閾值 預設容量16 預設載入因子0.75 12 table是hashmap內部資料儲存結構entry陣列。當hashmap的s...