Chinaunix首页 | 论坛 | 博客

分类: Python/Ruby

2014-02-20 23:18:31

        在练习一当中,主要使用了模块os,sys,和stat。接下来学习一下这三个模块。

os: 提供与操作系统相关的各种操作。
       以下是各通用
        environ : 它是一个dict。其中key就是Linux下各个环境变量的名称,如PATH;value的值与$PATH值相等。
        linesep: 行分隔符;在Linux下的值是  '\n'
        pathseq:path分隔符:在Linux下的值是 ' : '
        path : 它是一个模块,用于对路径名称的各种操作。
        name : 这个还不是十分清楚, 出来的结果是posix。
     
        以下是修改当前进程的运行环境的函数:(也主要是针对的 ls -l 中能里出来的信息)
        与进程环境相关的有:1、进程当前的工作目录,2、进程的用户ID、有效用户ID、用户组ID。
        1、获取和修改当前工作目录,os.getcwd() 获取当前的工作目录,与Linux pwd的值相等;os.chdir(‘’)切换当前工作目录,与Linux cd 相似。
        2、获取和修改进程的用户ID、有效用户ID、用户组ID。
             a、
获取和修改进程的用户ID。 os.getgid() 获取进程的用户ID,os.setuid(id) 设置进程的用户ID。 Linux环境下查看方法:id -u
             b、获取和修改进程的有效用户ID。os.geteuid() 和 os.seteuid().
             c、获取和修改进程的用户组ID。os.getgid() 和os.setgid().
             d、获取和修改进程的有效用户组ID。os.getegid() 和 os.setegid().
            这些个ID有什么用呢?原先是root权限,执行os.setuid()后结果如下:
>>> os.setuid(1000)
>>> os.open('/root/.vimrc', os.O_RDWR)
Traceback (most recent call last):
  File "", line 1, in
OSError: [Errno 13] Permission denied: '/root/.vimrc'
>>> os.geteuid()
1000
             注意:进程的有效用户ID也跟着改变了,其次无法在os.setuid(0)了。

        3、其它重要的函数有,os.getpid()_获取进程ID,os.getppid获取父进程ID,chroot()改变跟目录(起到了一定安全作用),putenv(name,value)设置环境变量,unsetenv(name)
            删除环境变量name。其中chroot的使用例子如下:
>>> getcwd()
'/home/xxxx/test'
>>> chroot('/home/xxxx')
>>> chdir('/test')
>>> getcwd()
'/test'

        以下是与文件创建创建、读、写相关,这些也包括在目录在内。
        1、最容易想到的有:open、read、write、close。
        2、对文件的i-node进行各种操作,例如修改文件的所有者,移动文件指针,修改文件的日期等

        最后一部分就是进程管理相关的函数,比如有fork、execl、wait等一系列函数。

        看来和进程、进程管理、文件操作相关的函数,就来os模块里面查找,且它与Unix高级环境编程中的大部分函数保持一致。 
        注意:stat模块提供了一些常量(可以这么称呼吗)和一些判断函数,往往利用os.stat()获得内容,然后进行比较判断      
        注意:可以使用help()函数,查看模块的信息,在编写程序是很有帮助。

阅读(988) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~