14-3.執行環境。建立執行其他python
指令碼的指令碼。
filename = r'd:\test.py'
execfile(filename)
14-4. os.system()。呼叫os.system()執行程式。附加題:將你的解決方案移植到subprocess.call()。
import os
from subprocess import call
os.system('notepad')
call('notepad')
14-5. commands.getoutput()。用commands.getoutput()解決前面的問題。
from commands import getoutput
output = getoutput('ls')
print output
14-6.popen()家族。選擇熟悉的系統命令,該命令從標準輸入獲得文字,操作或輸出資料。使用os.popen()與程式進行通訊。
import os
dirout = os.popen('dir')
sortin,sortout = os.popen2('sort')
filenames = dirout.read()
print filenames
sortin.write(filenames)
dirout.close()
sortin.close()
print sortout.read()
sortout.close()
14-7.subprocess模組。把先前問題的解決方案移植到subprocess模組。
from subprocess import popen,pipe
import os
dirout = popen('dir',stdout=pipe,shell=true).stdout
p = popen('sort',stdin=pipe,stdout=pipe,shell=true)
filenames = dirout.read()
print filenames
dirout.close()
p.stdin.write(filenames)
p.stdin.close()
print p.stdout.read()
p.stdout.close()
14-8.exit函式。設計乙個在程式退出時的函式,安裝到sys.exitfunc(),執行程式,演示你的exit函式確實被呼叫了。
import sys
def my_exit_func():
print 'show message'
sys.exitfunc = my_exit_func
def usage():
print 'at least 2 args required'
print 'usage: test.py arg1 arg2'
sys.exit(1)
argc = len(sys.argv)
if argc < 3:
usage()
print 'number of args entered:', argc
print 'args were:', sys.argv
14-9.shells.建立shell
(作業系統
介面)程式。給出接受作業系統命令的命令列介面(任意平台)。
import os
while 1:
cmd = raw_input('#: ')
if cmd == 'exit':
break
else:
output = os.popen(cmd).readlines()
for out in output:
print out,
14-11.生成和執行python**。用funcattrs.py指令碼(例14.2)加入測試**到已有程式的函式中。建立乙個測試框架,每次遇到你特殊的函式屬性,它都會執行你的測試**
。
x = -1
def foo(x):
if x > 0:
return true
else:
return false
foo.tester = '''
if foo(x):
print 'passed'
else:
print 'failed'
'''if hasattr(foo,'tester'):
print 'function "foo(x)" has a tester ... executing'
exec foo.tester
else:
print 'function "foo(x)" has no tester ... skipping'
程式設計珠璣第14章
這裡把所有關於堆的操作寫出來。當做標程吧。include include define ms 1025 typedef struct heap heap heap h static void shift heap h,int i else break a i t static void increa...
第14章 網路程式設計
14.1 幾個網路模組 服務端 import socket s socket.socket host socket.gethostname port 8090 s.bind host,port s.listen 5 while true c,addr s.accept print got conne...
《Python核心程式設計》第10章 習題
10 6.改進的 open 為內建的 open 函式建立乙個封裝.使得成功開啟檔案後,返回檔案控制代碼 若開啟失敗則返回給呼叫者 none 而不是生成乙個異常.這樣你開啟檔案時就不需要額外的異常處理語句 def myopen infile,mode r try fo open infile,mode...