探索c++,Linux相關機制,java等,歡迎交流
阿新 • • 發佈:2019-01-01
python作為一種指令碼語言,首先完成的工作是編寫指令碼。在平時編寫指令碼的過程中,我們注意到,時常需要與外界互動完成,比如人工手動輸入(如程式引數)、匯入外部檔案、定向輸入等。所以,這需要指令碼與外界有較好的輸入輸出互動。
python應對此類問題的模組有sys,StingIO等。
1. 手動輸入
這裡用到了sys模組的argv屬性,舉例:
=========================
#! /usr/bin/env python
# python script argvtest.py
import sys
usrargv = sys.argv
print usrargv
=========================
執行指令碼
$ chmod +x argvtest.py
$ ./argvtest.py -a -b -c
['./argvtest.py', '-a', '-b', '-c']
可以看到,sys.argv將返回一個列表,包括指令碼檔名和引數。這時,可以提取列表中的有效資訊,進行不同的功能實現。
raw_input( )函式同樣提供了一個簡單的輸入介面,以下是一個簡單的指令碼rawinputtest.py:
===============================
while True:
a = raw_input('Enter your words: ')
if a == 'stop':
break
print a
================================
這個指令碼可以一直輸入,直到遇見'stop'。所以,可以輸入一個列表,之後獲取列表中的各個元素作為程式的執行引數。
2. 輸入檔案
python輸入檔案當然可以採用最直接的open( )函式讀如檔案,這裡提供另一個方法,從系統shell匯入檔案。使用sys模組的stdin屬性。舉例,先建立一個文字檔案sdintest:
============================
'abc'
['hello', 'python']
{'python': 'script', 'R': 'function'}
============================
建立輸入指令碼inoutput.py:
============================
import sys
a = sys.stdin.readline()
b = sys.stdin.readline()
print a, b
=============================
執行指令碼
$ python inoutput.py < sdintest
'abc'
['hello', 'python']
注意:這種指令碼建立方法,不能將指令碼建立為可執行檔案(為什麼?)。
3. 定向輸出 兩種方法:1. 可以使用帶有write方法的物件,之後配合print。比如將sys.stdput作為一個開啟的可寫檔案,然後使用print依次輸入。同樣,這種方法可以被語句print >> myfile, obj1, obj2代替。2. 當然,也可以使用shell的">"定向輸入檔案,比如: $ python inoutput.py < sdintest > sdouttest 將得到檔案定向輸入sdouttest檔案。
3. 定向輸出 兩種方法:1. 可以使用帶有write方法的物件,之後配合print。比如將sys.stdput作為一個開啟的可寫檔案,然後使用print依次輸入。同樣,這種方法可以被語句print >> myfile, obj1, obj2代替。2. 當然,也可以使用shell的">"定向輸入檔案,比如: $ python inoutput.py < sdintest > sdouttest 將得到檔案定向輸入sdouttest檔案。