第14章 執行環境 4

2021-06-01 03:06:43 字數 1444 閱讀 2214

14.5 執行其他(非python)程式

14.5.1 os.system()

>>> import os

>>> result = os.system('ipconfig')

>>> print result

0

system()是乙個非常簡單的函式,接收字串形式的系統命令並執行它。

當執行命令的時候,python的執行是掛起的。當我們執行完成之後,將會以system()的返回值形式給出退出狀態,python的執行也會繼續。

通過退出狀態顯示成功或失敗而不是通過輸入和/或輸出通訊。通常的約定是利用退出狀態,0表示成功,非0表示其他型別的錯誤。

14.5.2 os.popen()

>>> import os

>>> f = os.popen('ipconfig')

>>> data = f.readlines()

>>> for d in data:

... print d

...

windows ip configuration

ethernet adapter local area connection:

connection-specific dns suffix . : cn.kodak.com

ip address. . . . . . . . . . . . : 150.245.167.42

subnet mask . . . . . . . . . . . : 255.255.255.0

default gateway . . . . . . . . . : 150.245.167.254

>>>

popen()函式是檔案物件和system()函式的結合。它可以建立乙個指向那個程式的單向連線,然後像訪問檔案那樣訪問這個程式。如果程式要求輸入,那麼你要用'w'模式寫入那個命令來呼叫popen()。你發給程式的資料會通過標準輸入接收到。那麼當它寫入標準輸出的時候,你就可以通過類檔案控制代碼使用熟悉的file物件read*()方法來讀取輸入。

14.5.3 os.fork()、os.exec*()、os.wait*()

ret = os.fork()     #產生兩個程序,都返回

if ret ==0: #子程序返回的pid是0

child_suite #子程序的**

else: #父程序返回是子程序的pid

parent_suite #父程序的**

fork()採用成為程序的單一執行流程控制,如果你喜歡的話,可稱之為建立「岔路口」。

呼叫fork()的原始程序稱為父程序,而作為該呼叫結果新建立的程序則稱為子程序。當子程序返回的時候,其返回值永遠是0;當父程序返回時,其返回值永遠是子程序的程序識別符號(又稱程序id,

第14章 執行環境 1

14.1 可呼叫物件 python有4種可呼叫物件 函式 方法 類以及一些類的例項。記住這些物件的任何引用或者別名都是可呼叫的。14.1.1 函式 內建函式 bif 使用c c 寫的,編譯過後放入python直譯器,然後把它們作為第一 內建 命名空間的一部分載入進系統。這些函式在 builtin 模...

第14章 執行環境 5

14.6 受限執行 rexec 第乙個模組允許沙盒 sandbox 中的執行 修改內建物件。bastion 第二個模組用來過濾屬性和包裝你的類。14.7 結束執行 14.7.1 sys.exit and systemexit sys.exit 的語法為 當呼叫sys.exit 時,就會引發syste...

第14章 陣列

1 定義 相同的名稱和型別的變數的集合 陣列通常比較大,為了節省記憶體,c 規定陣列在程式中只能有乙個原本,沒有副本 陣列中的變數叫陣列元素 int a 10 陣列的型別 陣列的名稱 陣列的下標 2 陣列下標越界 3 陣列的初始化 1 陣列的部分初始化 int array 20 2 int arra...