一、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 3The 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 "", line 1, in
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