#!/usr/bin/python # Filename: cat.py import sys def readfile(filename): ‘‘‘Print a file to the standard output.‘‘‘ f = file(filename) while True: line = f.readline() if len(line) == 0: break print line, # notice comma f.close() # Script starts from here if len(sys.argv) < 2: print ‘No action specified.‘ sys.exit() if sys.argv[1].startswith(‘--‘): option = sys.argv[1][2:] # fetch sys.argv[1] but without the first two characters if option == ‘version‘: print ‘Version 1.2‘ elif option == ‘help‘: print ‘‘‘This program prints files to the standard output. Any number of files can be specified. Options include: --version : Prints the version number --help : Display this help‘‘‘ else: print ‘Unknown option.‘ sys.exit() else: for filename in sys.argv[1:]: readfile(filename)
运行结果如下:
这个程序用来模范Linux/Unix用户熟悉的cat命令。你只需要指明某些文本文件的名字,这个程序会把它们打印输出。
在Python程序运行的时候,即不是在交互模式下,在sys.argv
列表中总是至少有一个项目。它就是当前运行的程序名称,作为sys.argv[0]
(由于Python从0
开始计数)。其他的命令行参数在这个项目之后。
为了使这个程序对用户更加友好,我们提供了一些用户可以指定的选项来了解更多程序的内容。我们使用第一个参数来检验我们的程序是否被指定了选项。如果使用了--version
选项,程序的版本号将被打印出来。类似地,如果指定了--help
选项,我们提供一些关于程序的解释。我们使用sys.exit
函数退出正在运行的程序。和以往一样,你可以看一下help(sys.exit)
来了解更多详情。
如果没有指定任何选项,而是为程序提供文件名的话,它就简单地打印出每个文件地每一行,按照命令行中的顺序一个文件接着一个文件地打印。
顺便说一下,名称cat是 concatenate 的缩写,它基本上表明了程序的功能——它可以在输出打印一个文件或者把两个或两个以上文件连接/级连在一起打印。
sys.version
字符串给你提供安装的Python的版本信息。sys.version_info
元组则提供一个更简单的方法来使你的程序具备Python版本要求功能。
[swaroop@localhost code]$ python
>>> import sys
>>> sys.version
‘2.3.4 (#1, Oct 26 2004, 16:42:40) \n[GCC 3.4.2 20041017 (Red Hat 3.4.2-6.fc3)]‘
>>> sys.version_info
(2, 3, 4, ‘final‘, 0)
对于有经验的程序员,sys
模块中其他令人感兴趣的项目有sys.stdin
、sys.stdout
和sys.stderr
它们分别对应你的程序的标准输入、标准输出和标准错误流。
以上内容出自:http://www.2cto.com/shouce/pythonjc/ch14s02.html
更多内容:
sys.argv #命令行参数List,第一个元素是程序本身路径 sys.modules.keys() #返回所有已经导入的模块列表 sys.exc_info() #获取当前正在处理的异常类,exc_type、exc_value、exc_traceback当前处理的异常详细信息 sys.exit(n) #退出程序,正常退出时exit(0) sys.hexversion #获取Python解释程序的版本值,16进制格式如:0x020403F0 sys.version #获取Python解释程序的版本信息 sys.maxint #最大的Int值 sys.maxunicode #最大的Unicode值 sys.modules #返回系统导入的模块字段,key是模块名,value是模块 sys.path #返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值 sys.platform #返回操作系统平台名称 sys.stdout #标准输出 sys.stdin #标准输入 sys.stderr #错误输出 sys.exc_clear() #用来清除当前线程所出现的当前的或最近的错误信息 sys.exec_prefix #返回平台独立的python文件安装的位置 sys.byteorder #本地字节规则的指示器,big-endian平台的值是‘big‘,little-endian平台的值是‘little‘ sys.copyright #记录python版权相关的东西 sys.api_version #解释器的C的API版本 sys.version_info >>> sys.version_info (2, 4, 3, ‘final‘, 0) #‘final‘表示最终,也有‘candidate‘表示候选,表示版本级别,是否有后继的发行 sys.displayhook(value) #如果value非空,这个函数会把他输出到sys.stdout,并且将他保存进__builtin__._.指在python的交互式解释器里,‘_‘ 代表上次你输入得到的结果,hook是钩子的意思,将上次的结果钩过来 sys.getdefaultencoding() #返回当前你所用的默认的字符编码格式 sys.getfilesystemencoding() #返回将Unicode文件名转换成系统文件名的编码的名字 sys.setdefaultencoding(name)#用来设置当前默认的字符编码,如果name和任何一个可用的编码都不匹配,抛出 LookupError,这个函数只会被site模块的sitecustomize使用,一旦别site模块使用了,他会从sys模块移除 sys.builtin_module_names #Python解释器导入的模块列表 sys.executable #Python解释程序路径 sys.getwindowsversion() #获取Windows的版本 sys.stdin.readline() #从标准输入读一行,sys.stdout.write("a") 屏幕输出a
本文出自 “浩天” 博客,http://tianhao936.blog.51cto.com/1043670/881535
原文:http://www.cnblogs.com/Finn-Cheng/p/5324000.html