一、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