原文地址:python脚本输入输出交互控制
作者:牛牛龙
python作为一种脚本语言,首先完成的工作是编写脚本。在平时编写脚本的过程中,我们注意到,时常需要与外界交互完成,比如人工手动输入(如程序参数)、导入外部文件、定向输入等。所以,这需要脚本与外界有较好的输入输出交互。
a = raw_input('Enter your words: ')
if a == 'stop':
break
print a
3. 定向输出
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:
================================
这个脚本可以一直输入,直到遇见'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文件。