第十四章 python标准库

部分参考自http://blog.csdn.net/vivilorne/article/details/3863545和http://www.crifan.com/python_capture_and_parse_command_line_parameter/和http://www.cnblogs.com/Kaysin/archive/2013/02/10/2909777.html和http://5ydycm.blog.51cto.com/115934/304324/
第十四章 python标准库

sys模块

sys.argv

在Python程序运行的时候,即不是在交互模式下,在sys.argv列表中总是至少有一个项目。它就是当前运行的程序名称,作为sys.argv[0]
sys.argv[]是用来获取命令行参数的,sys.argv[0]表示代码本身文件路径,所以参数从1开始。
简单说就是通过sys.argv可以获得所输入的所有的内容,包括参数。
Python中,可以通过sys.argv获得命令行中所输入的全部的内容,获得的值是个列表变量。列表中的值,分别是命令行中,通过空格分隔出来的各个值。
这个程序用来模仿Linux/Unix用户熟悉的cat命令。你只需要指明某些文本文件的名字,这个程序会把它们打印输出。
import sys

def readfile(filename):
    f = file(filename)
    while True:
        line = f.readline()
        if len(line) == 0:
            break
        print line, 
    f.close()
    
if len(sys.argv) < 2:
    print 'No action specified.'
    sys.exit()
if sys.argv[1].startswith('--'):
    option = sys.argv[1][2:]
    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)




首先,我们看到了def, 它定义了一个函数,这个函数从名称上看来是读取文件的,参数是文件名。
第一个if 就是解决是否提供了参数的问题,如果没有参数,程序则退出,使用函数 sys.exit( )
第二个if 是用来判断参数是什么。可以看到这里使用了偏移来索引字符串。
如果没有指定任何选项,而是为程序提供文件名的话,它就简单地打印这个文件。

import sys  
print 'The command line arguments are:'  
print sys.argv


我们看到了sys.argv 的输出内容是一个list,如果没有参数,应该只有一项。如果有参数,长度肯定超过1 .
----------------------------

Linux/Unix的cat命令

cat是 concatenate 的缩写,cat主要有三大功能:
1.一次显示整个文件。
2.从键盘创建一个文件。 只能创建新文件,不能编辑已有文件.
3.将几个文件合并为一个文件
-------------------------------

更多sys的内容

sys.version_info、sys.stdin、sys.stdout和sys.stderr

sys.version_info元组提供一个更简单的方法来使你的程序具备Python版本要求功能。(其实就是python版本信息。。。)
sys.stdin、sys.stdout和sys.stderr它们分别对应你的程序的标准输入、标准输出和标准错误流。更深入,可以看看这篇博客http://5ydycm.blog.51cto.com/115934/304324/
>>> import sys
>>> sys.version
'2.7.2 (default, Jun 12 2011, 14:24:46) [MSC v.1500 64 bit (AMD64)]'
>>> sys.version_info
sys.version_info(major=2, minor=7, micro=2, releaselevel='final', serial=0)
>>> sys.stdin
<idlelib.rpc.RPCProxy object at 0x0000000002BD3E10>
>>> sys.stdout
<idlelib.rpc.RPCProxy object at 0x0000000002BD3E48>
>>> sys.stderr
<idlelib.rpc.RPCProxy object at 0x0000000002BD3E80>
>>> 

----------------------------------------

sys.exit(n)

sys.exit 函数, 它带有一个可选的整数参数返回给调用它的程序. 这意味着你可以在主程序中捕获对sys.exit 的调用。(注:0是正常退出,其他为不正常,可抛异常事件供捕获!)
sys.exit从python程序中退出,将会产生一个systemExit异常,没有捕获这个异常,会直接退出;捕获这个异常可以做一些额外的清理工作。
这个可选参数默认正常退出状态是0,以数值为参数的范围为:0-127。其他的数值为非正常退出
import sys
 
def exitfunc(value):
    '''Clear function'''
    print value
    sys.exit(0)
 
print "hello"
 
try:
    sys.exit(1)
except SystemExit,value: # value=SystemExit:1
    exitfunc(value)
 
print "come?"
输出:
hello
1
——————————————————————————————————————————————————————————————————

os模块

这个模块包含普遍的操作系统功能。如果你希望你的程序能够与平台无关的话,这个模块是尤为重要的。即它允许一个程序在编写后不需要任何改动,也不会发生任何问题,就可以在Linux和Windows下运行。一个例子就是使用os.sep可以取代操作系统特定的路径分割符
>>> os.name
'nt'
>>> os.getcwd()
'D:\\Python27'
>>> os.getenv('TEMP')
'C:\\Users\\acer\\AppData\\Local\\Temp'
>>> os.listdir('D:\\Python27')
['delicious.py', 'delicious.pyc', 'DLLs', 'Doc', 'hello.py', 'hello.pyc', 'include', 'Lib', 'libs', 'LICENSE.txt', 'Microsoft.VC90.CRT.manifest', 'msvcr90.dll', 'NEWS.txt', 'poem.txt', 'pydelicious.py', 'pydelicious.pyc', 'python.exe', 'python27.dll', 'pythonw.exe', 'README.txt', 'recommendations.py', 'recommendations.pyc', 'recommendations1.py', 'recommendations1.pyc', 'recommendationss.py', 'recommendationss.pyc', 'Removesetuptools.exe', 'Scripts', 'setuptools-wininst.log', 'shoplist.data', 'tcl', 'Tools']
>>> os.linesep
'\r\n'
>>> os.path.split('D:\\Python27')
('D:\\', 'Python27')
>>> 
● os.name字符串指示你正在使用的平台。比如对于Windows,它是'nt',而对于Linux/Unix用户,它是'posix'。
● os.getcwd()函数得到当前工作目录,即当前Python脚本工作的目录路径。
● os.getenv()和os.putenv()函数分别用来读取和设置环境变量。参考http://www.cnblogs.com/whiteyun/archive/2009/08/10/1542913.html
● os.listdir()返回指定目录下的所有文件和目录名。
● os.remove()函数用来删除一个文件。
● os.system()函数用来运行shell命令。
● os.linesep字符串给出当前平台使用的行终止符。例如,Windows使用'\r\n',Linux使用'\n'而Mac使用'\r'。
● os.path.split()函数返回一个路径的目录名和文件名。
● os.path.isfile()和os.path.isdir()函数分别检验给出的路径是一个文件还是目录。类似地,os.path.exists()函数用来检验给出的路径是否真地存在。(参考第十章笔记)


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值