列举⼗个常⽤的python标准库_第⼗章Python常⽤标准库使⽤
(必会)
本章涉及标准库:
1、sys
2、os
3、glob
4、math
5、random
6、platform
7、pikle与cPikle
8、subprocess
9、Queue
10、StringIO
11、logging
12、ConfigParser
13、urllib与urllib2
14、json
15、time
16、datetime
10.1 sys
1)sys.argv
命令⾏参数。
argv[0] #代表本⾝名字
argv[1] #第⼀个参数
argv[2] #第⼆个参数
argv[3] #第三个参数
argv[N] #第N个参数
argv #参数以空格分隔存储到列表。
看看使⽤⽅法:#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
print sys.argv[0]
print sys.argv[1]
print sys.argv[2]
print sys.argv[3]
print sys.argv
print len(sys.argv)
# python test.py
test.py
a
b
c
c
['test.py', 'a', 'b', 'c']
4
值得注意的是,argv既然是⼀个列表,那么可以通过len()函数获取这个列表的长度从⽽知道输⼊的参数数量。可以看到列表把⾃⾝⽂件名也写了进去,所以当我们统计的使⽤应该-1才是实际的参数数量,因此可以len(sys.argv[1:])获取参数长度。
2)sys.path
模块搜索路径。>>> sys.path
['', '/usr/local/lib/python2.7/dist-packages/tornado-3.', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-
dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages']
输出的是⼀个列表,⾥⾯包含了当前Python解释器所能到的模块⽬录。
如果想指定⾃⼰的模块⽬录,可以直接追加:>>> sys.path.append('/opt/scripts')
>>> sys.path
['', '/usr/local/lib/python2.7/dist-packages/tornado-3.', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-
dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages', '/opt/scripts']
3)sys.platform
系统平台标识符。系统平台标识符
Linuxlinux
Windowswin32
Windows/Cygwincygwin
Mac OS Xdarwin
>>> sys.platform
'linux2'
Python本⾝就是跨平台语⾔,但也不就意味着所有的模块都是在各种平台通⽤,所以可以使⽤这个⽅法判断当前平台,做相应的操作。
4)sys.subversion
在第⼀章讲过Python解释器有⼏种版本实现,⽽默认解释器是CPython,来看看是不是:>>> sys.subversion
('CPython', '', '')
5)sys.version
查看Python版本:>>> sys.version
'2.7.6 (default, Jun 22 2015, 17:58:13) \n[GCC 4.8.2]'
it()
退出解释器:#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
print "Hello world!"
print "Hello world!"
# python test.py
Hello world!
代码执⾏到it()就会终⽌程序。
7)sys.stdin、sys.stdout和sys.stderr
标准输⼊、标准输出和错误输出。
标准输⼊:⼀般是键盘。stdin对象为解释器提供输⼊字符流,⼀般使⽤raw_input()和input()函数。例如:让⽤户输⼊信息#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
name = raw_input("Please input your name: ")
print name
# python test.py
Please input your name: xiaoming
xiaoming
import sys
print "Please enter your name: "
name = adline()
print name
# python b.py
Please enter your name:
xiaoming
xiaoming
再例如,a.py⽂件标准输出作为b.py⽂件标准输⼊:# cat a.py
import sys
sys.stdout.write("123456\n")
sys.stdout.flush()
# cat b.py
import sys
print adlines()
# python a.py | python b.py
['123456\n']
sys.stdout.write()⽅法其实就是下⾯所讲的标准输出,print语句就是调⽤了这个⽅法。
标准输出:⼀般是屏幕。stdout对象接收到print语句产⽣的输出。
例如:打印⼀个字符串#!/usr/bin/python
# -*- coding: utf-8 -*-
import sysimport pickle
print "Hello world!"
# python test.py
Hello world!
sys.stdout是有缓冲区的,⽐如:import sys
import time
for i in range(5):
print i,
# sys.stdout.flush()
time.sleep(1)
# python test.py
0 1 2 3 4
本是每隔⼀秒输出⼀个数字,但现在是循环完才会打印所有结果。如果把sys.stdout.flush()去掉,就会没执⾏到print就会刷新stdout输出,这对实时输出信息的程序有帮助。
错误输出:⼀般是错误信息。stderr对象接收出错的信息。
例如:引发⼀个异常>>> raise Exception, ""
Traceback (most recent call last):File "", line 1, in
Exception:
QQ:323779636(Shell/Python运维开发)
10.2 os
os模块主要对⽬录或⽂件操作。⽅法描述⽰例
os.name返回操作系统类型返回值是"posix"代表linux,"nt"代表windows
os.devnull返回/dev/null标识符
os.linesep返回⼀个换⾏符"\n">>> print "a" + os.linesep + "b"
a
b
os.sep返回⼀个路径分隔符正斜杠"/">>> "a" + os.sep + "b"
'a/b'
os.listdir(path)列表形式列出⽬录
'/home/user'
os.chdir(path)改变当前⼯作⽬录到指定⽬录>>> os.chdir('/opt')
>>> os.getcwd()
'/opt'
os.mkdir(path [, mode=0777])创建⽬录>>> os.mkdir('/home/user/test')
os.makedirs(path [, mode=0777])递归创建⽬录>>> os.makedirs('/home/user/abc/abc')
os.stat(path)获取⽂件或⽬录属性
os.chown(path, uid, gid)改变⽂件或⽬录所有者
os.chmod(path, mode)改变⽂件访问权限>>> os.chmod('/home/user/c/', 0777)
os.symlink(src, dst)创建软链接
os.unlink(path)移除软链接>>> os.unlink('/home/user/ddd')
urandom(n)返回随机字节,适合加密使⽤>>> os.urandom(2)
'%\xec'
os.kill(pid, sig)发送⼀个信号给进程
os.walk(path)⽬录树⽣成器,返回格式:(dirpath, [dirnames], [filenames])>>> for root, dir, file in os.walk('/home/user/abc'): ... print root
... print dir
... print file
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论