1. 程式人生 > >python模塊—command and sys

python模塊—command and sys

python

1.commands模塊

linux系統環境下用於支持shell的一個模塊


1)getoutput()

返回值只有返回結果(字符串類型),沒辦法判斷執行結果是否正常


例子

import commands

cmd = "ls /data/temp"

result1 = commands.getoutput(cmd)

print(type(result1)) # 類型為str

print(result1)


結果:

<type ‘str‘>

2.py



2)getstatusoutout()

返回結果是一個tuple元組,第一個值為接收狀態碼,int類型,0表示正常,非0表示異常;第二個值為字符串,即shell命令執行的結果


例子

import commands

cmd = "ps -ef"

status,result2 = commands.getstatusoutput(cmd)

print(type(status))

print(status)

print(type(result2))

print(result2)


結果:

<type ‘int‘>

0

<type ‘str‘>

UID PID PPID C STIME TTY TIME CMD

root 1 0 0 Oct09 ? 00:00:14 /usr/lib/systemd/systemd --switched-root --system --deserialize 21

root 2 0 0 Oct09 ? 00:00:00 [kthreadd]



2.sys模塊

1)通過sys模塊獲取程序參數

sys.argv[0]:第一個參數,腳本本身

sys.argv[1]:第二個參數,傳入的第一個參數


例子

import sys

print("argv[0]={0} argv[1]={1}".format(sys.argv[0],sys.argv[1]))

結果:

argv[0]=C:/Users/test/PycharmProjects/a/a1.python.py argv[1]=parameter1



2)sys.stdin、sys.stdout、sys.stderr

stdin、stdout、stderr 變量包含與標準I/O流對應的流對象。如果需要更好地控制輸出,而print 不能滿足你的要求,你也可以替換它們,重定向輸出和輸入到其它設備( device ),或者以非標準的方式處理它們


例子1:sys.stdout與print

import sys

sys.stdout.write("hello"+ "\n")

print("hello")


結果:

hello

hello


例子2:sys.stdin與raw_input

import sys

name1 = raw_input("input your name: ")

print(name1)

print ‘stdin_your_name: ‘, # command to stay in the same line

name2 = sys.stdin.readline()[:-1] # -1 to discard the ‘\n‘ in input stream

print(name2)


結果:

input your name: huangzp

huangzp

stdin_your_name: huangzp

huangzp



例子3: 控制臺重定向文件

import sys

f_hander = open("out.log","w")

sys.stdout = f_hander

print("hello")


結果:

本地生成一個out.log文件,內容為hello



3)捕獲sys.exit(n)調用

執行到主程序末尾,解釋器自動退出,但如需中途退出程序,可以調用sys.exit函數,帶有一個可選的整數參數返回給調用它的程序,表示你可以在主程序中捕獲對sys.exit的調用。(0是正常退出,其他為異常)


例子

import sys

def exitfunc():

print "hello world"

sys.exitfunc = exitfunc # 設置捕獲時調用的函數

print "start"

sys.exit(1) # 退出自動調用exitfunc()後,程序退出

print "end" # 不會執行print


結果:

start

hello world


說明:

設置sys.exitfunc函數,及當執行sys.exit(1)的時候,調用exitfunc函數;sys.exit(1)後面的內容就不會執行了,因為程序已經退出



python模塊—command and sys