一、sys
这是一个用来跟python解释器交互的模块。
sys.argv
用来想python解释器传递参数,也叫“命令行参数”。
代码如下:
#coding=utf-8 import sys print "The file name:",sys.argv[0] print "The number of arg:",len(sys.argv) print "Thr arg is:",str(sys.argv)
执行:python 123.py 1 2 3
The file name: 123.py The number of arg: 4 Thr arg is: ['123.py', '1', '2', '3']
sys.exit()
用于退出当前程序,与return的差别时,return返回一个值,而sys.exit()则返回一个异常SystemExit。
代码如下:
#coding=utf-8 import sys for i in range(10): if i == 5: sys.exit() else: print i
执行结果:
0 1 2 3 4
需要注意的是,我们可以使用sys.exit(0)来表示正常退出;也可以sys.exit("there is something error")来提示错误
sys.path
python解释器搜索模块的路径,类似linux的PATH变量,是个list,可以用append()添加路径。
sys.stdin,sys.stdout,sys.stderr
标准输入,标准输出,标准错误
代码如下:
>>> import sys >>> out = sys.stdout >>> f = open("/tmp/sadas","w") >>> sys.stdout = f >>> print 1 >>> print 2 >>> print 3 >>> f.close() >>> sys.stdout = out >>> print 4 4 >>> print 5 5
需要注意的是,如果我们只需要写部分stdout到某个文件,必须要先将stdout赋值给一个变量。
二、os
os.raname
重命名文件或目录
>>> import os >>> os.rename('b.txt','a.txt') >>> os.rename('dirb','dira')
os.remove
删除一个文件,注意是文件,不能删除目录
>>> os.remove('a.txt')
os.listdir
返回目录中的文件列表,注意是个list,并且不能区分是个文件还是个目录
buranle@buranle:~/dira$ ls 1 2 3 4 5 a >>> os.listdir('dira') ['5', '4', 'a', '2', '1', '3']
os.getcwd,os.chdir
当前工作目录,改变工作目录
>>> os.getcwd() '/home/buranle' >>> os.chdir('/tmp') >>> os.getcwd() '/tmp' >>> os.pardir '..'
另外注意,os.pardir是个变量,指向父目录,即..
os.makedirs,os.removedirs
需要注意的是,这里的removedirs只能删除空目录。
>>> os.getcwd() '/home/buranle' >>> os.listdir('dira') ['5', '4', 'a', '2', '1', '3'] >>> os.removedirs('dira') Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib/python2.7/os.py", line 170, in removedirs rmdir(name) OSError: [Errno 39] Directory not empty: 'dira' >>> os.removedirs('dira/a') >>> os.listdir('dira') ['5', '4', '2', '1', '3'] >>> os.makedirs('dira/testdir') >>> os.listdir('dira') ['5', '4', '2', 'testdir', '1', '3']
如果我们要删除一个非空的目录,可以使用shutil的rmtree模块
>>> import shutil >>> shutil.rmtree('dira')
注意,os.makedirs还有一个功能,可以建立多层目录,类似于mkdir -p
>>> os.makedirs('/tmp/1/1/1/1/1') >>> os.listdir('/tmp/1/1/1/1/1') []
os.mkdir和os.rmdir的功能大部分类似,不同的是mkdir和rmdir都只能针对一层目录。
os.stat
查看文件或目录的属性
>>> os.stat('/home/buranle') posix.stat_result(st_mode=16877, st_ino=1050957L, st_dev=20atime=1446148660, st_mtime=1446148643, st_ctime=1446148643)
具体的信息为,权限模式,inode_number,设备,number of hard links,用户id,群组ID,文件大小(以位为单位),文件的atime,文件的mtime,文件的ctime
>>> import os >>> import stat >>> st = os.stat('/home/buranle') >>> mode = st.st_mode >>> mode 16877 >>> print bin(stat.S_IMODE(mode)) 0b111101101