Python第二十二天   stat模块  os.chmod方法  os.stat方法  pwd  grp模块  os.access()方法

stat模块描述了os.stat(filename)返回的文件属性列表中各值的意义,根据stat模块读取os.stat()中的值的意思
简单来说,os.stat是将文件的相关属性读出来,然后用stat模块来处理

os.stat

返回一个类似字典对象(stat_result对象,包含10个元素),结果类型是posix.stat_result

stat(path) -> stat result

获取stat结果

st = os.stat('/tmp/aa.py')
print st
posix.stat_result(st_mode=33188, st_ino=385537, st_dev=64513L, st_nlink=1, st_uid=0, st_gid=0, st_size=1243, st_atime=1505466749, st_mtime=1505870370, st_ctime=1505870370) st_mode(权限模式)
st_ino(inode number)
st_dev(device)
st_nlink(number of hard links)
st_uid(所有用户的user id)
st_gid(所有用户的group id)
st_size(文件大小,以位为单位)
st_atime(最近访问的时间)
st_mtime(最近修改的时间)
st_ctime(创建的时间) os.stat的返回类型
type(st)
posix.stat_result st = os.stat('/tmp/aa.py')
st.st_ctime
stat.ST_CTIME(st.st_ctime) st.st_ino
stat.ST_INO(st.st_ino) st.st_dev
stat.ST_DEV(st.st_dev) st.st_nlink
stat.ST_NLINK(st.st_nlink) st.st_uid
stat.ST_UID(st.st_uid) st.st_gid
stat.ST_GID(st.st_gid) st.st_size
stat.ST_SIZE(st.st_size) st.st_atime
stat.ST_ATIME(st.st_atime) st.st_mtime
stat.ST_MTIME(st.st_mtime) st.st_ctime
stat.ST_CTIME(st.st_ctime) st.st_mode
stat.S_IMODE(st.st_mode)

stat模块

import stat

stat 模块定义用来测试文件类型的函数
stat.S_ISDIR(mode)
  判断文件是不是一个目录。

stat.S_ISCHR(mode)
  判断文件是不是一个字符型设备。

stat.S_ISBLK(mode)
  判断文件是不是一个块设备。

stat.S_ISREG(mode)
  判断mode是不是来自一个普通文件。

stat.S_ISFIFO(mode)
  判断mode是不是来自一个FIFO(如:具名管道)

stat.S_ISLNK(mode)
  判断mode是不是来自一个符号链接。

stat.S_ISSOCK(mode)
  判断mode是不是来自一个套接字。

stat.S_IMODE(mode)
  #返回文件权限的chmod格式。

stat.S_IFMT(mode)  
   返回文件的类型

例子
st = os.stat('/tmp/aa.py').st_mode
oct(stat.S_IMODE(st))
'0755'

stat 模块的标识符,可以用在os.chmod()方法中:

stat.S_ISUID: Set user ID on execution.                      不常用
stat.S_ISGID: Set group ID on execution.                    不常用
stat.S_ENFMT: Record locking enforced.                                          不常用
stat.S_ISVTX: Save text image after execution.                                在执行之后保存文字和图片
stat.S_IREAD: Read by owner.                                                           对于拥有者读的权限
stat.S_IWRITE: Write by owner.                                                         对于拥有者写的权限
stat.S_IEXEC: Execute by owner.                                                       对于拥有者执行的权限
stat.S_IRWXU: Read, write, and execute by owner.                          对于拥有者读写执行的权限
stat.S_IRUSR: Read by owner.                                                            对于拥有者读的权限
stat.S_IWUSR: Write by owner.                                                          对于拥有者写的权限
stat.S_IXUSR: Execute by owner.                                                       对于拥有者执行的权限
stat.S_IRWXG: Read, write, and execute by group.                                 对于同组的人读写执行的权限
stat.S_IRGRP: Read by group.                                                             对于同组读的权限
stat.S_IWGRP: Write by group.                                                           对于同组写的权限
stat.S_IXGRP: Execute by group.                                                        对于同组执行的权限
stat.S_IRWXO: Read, write, and execute by others.                          对于其他组读写执行的权限
stat.S_IROTH: Read by others.                                                           对于其他组读的权限
stat.S_IWOTH: Write by others.                                                         对于其他组写的权限
stat.S_IXOTH: Execute by others.                                                      对于其他组执行的权限


os.access() 方法

这个方法一般只用来做判断

os.access() 方法使用当前的uid/gid尝试访问路径。大部分操作使用有效的 uid/gid, 因此运行环境可以在 suid/sgid 环境尝试

os.access(path, mode);
参数
path -- 要用来检测是否有访问权限的路径。
mode -- mode为F_OK,测试存在的路径,或者它可以是包含R_OK, W_OK和X_OK或者R_OK, W_OK和X_OK其中之一或者更多。
os.F_OK: 作为access()的mode参数,测试path是否存在。
os.R_OK: 包含在access()的mode参数中 , 测试path是否可读。
os.W_OK 包含在access()的mode参数中 , 测试path是否可写。
os.X_OK 包含在access()的mode参数中 ,测试path是否可执行

例子1

#!/usr/bin/python
# -*- coding: UTF-8 -*- import os, sys # 假定 test/foo.txt 文件存在,并有读写权限 ret = os.access("test/foo.txt", os.F_OK)
print "F_OK - 返回值 %s"% ret ret = os.access("test/foo.txt", os.R_OK)
print "R_OK - 返回值 %s"% ret ret = os.access("test/foo.txt", os.W_OK)
print "W_OK - 返回值 %s"% ret ret = os.access("test/foo.txt", os.X_OK)
print "X_OK - 返回值 %s"% ret

例子2

def check_access_and_print_warning(sock_dir):
'''
Check if this user is able to access the socket
directory and print a warning if not
'''
if (os.access(sock_dir, os.R_OK) and
os.access(sock_dir, os.W_OK) and
os.access(sock_dir, os.X_OK)):
return
else:
print('WARNING: Events will not be reported'
' (not able to access {0})'.format(sock_dir))

os.chmod() 方法

os.chmod() 方法用于更改文件或目录的权限。
语法
chmod()方法语法格式如下,该方法没有返回值:
os.chmod(path, mode)

参数
path -- 文件名路径或目录路径。
flags -- 可用以下选项按位或进行权限叠加。

stat.S_IXOTH: 其他用户有执行权0o001
stat.S_IWOTH: 其他用户有写权限0o002
stat.S_IROTH: 其他用户有读权限0o004
stat.S_IRWXO: 其他用户有全部权限(权限掩码)0o007
stat.S_IXGRP: 组用户有执行权限0o010
stat.S_IWGRP: 组用户有写权限0o020
stat.S_IRGRP: 组用户有读权限0o040
stat.S_IRWXG: 组用户有全部权限(权限掩码)0o070
stat.S_IXUSR: 拥有者具有执行权限0o100
stat.S_IWUSR: 拥有者具有写权限0o200
stat.S_IRUSR: 拥有者具有读权限0o400
stat.S_IRWXU: 拥有者有全部权限(权限掩码)0o700
stat.S_ISVTX: 目录里文件目录只有拥有者才可删除更改0o1000
stat.S_ISGID: 执行此文件其进程有效组为文件所在组0o2000
stat.S_ISUID: 执行此文件其进程有效用户为文件所有者0o4000
stat.S_IREAD: windows下设为只读
stat.S_IWRITE: windows下取消只读

使用os.chmod()执行chmod +x

# 获取到文件的权限模式,然后将原来权限模式和新权限模式用或连接起来就可以实现chmod+x
stmode = os.stat('/tmp/aa.py').st_mode
os.chmod('/tmp/aa.py', stmode | stat.S_IXOTH|stat.S_IXGRP |stat.S_IXUSR)

pwd模块和grp模块

pwd模块,提供了一个Unix 密码数据库(/etc/passwd文件)的接口,这个数据库包含本地机器用户账户信息。

返回对应uid的用户信息

pwd.getpwuid(uid)

返回对应name的用户信息

pwd.getpwnam(username)

获取返回结果中的uid

pwd.getpwnam(username)
pwd.struct_passwd(pw_name='mysql', pw_passwd='x', pw_uid=500, pw_gid=500, pw_gecos='', pw_dir='/home/mysql', pw_shell='/sbin/nologin')

def setPrint():
print pwd.getpwnam('mysql')
list=[]
for i in pwd.getpwnam('mysql'):
print i # 通过列表保存返回的结果
list.append(i)
# print type(aa) print list
uid = list[2] # 列表第三个元素就是uid
print 'uid %s' %(uid)

返回所有用户信息

pwd.getpwall()

返回所有用户信息

import pwd
def get_user():
all_user = {}
for user in pwd.getpwall():
all_user[user[0]] = all_user[user[2]] = user
return all_user
def userinfo(uid):
return get_user()[uid]

grp模块,提供了一个Unix 用户组/group(/etc/group文件)数据库的接口

返回对应gid的组信息

grp.getgrgid(gid)

返回对应group name的组信息

grp.getgrname(groupname)

返回所有组信息

grp.getgrall()

Python第二十二天 stat模块 os.chmod方法 os.stat方法 pwd grp模块的更多相关文章

  1. 孤荷凌寒自学python第二十二天python类的继承

    孤荷凌寒自学python第二十二天python类的继承 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) python中定义的类可以继承自其它类,所谓继承的概念,我的理解 是,就是一个类B继承自 ...

  2. [PY3]——pwd | grp 模块

    pwd和grp模块都非常简单粗暴,各自分别下面都只有三个函数,来根据/etc/passwd./etc/group文件获取相关信息 getpwuid(UID):根据UID获取用户信息,返回一个list ...

  3. python第二十二天(面向对象)

    1.面向过程编程: 核心就是过程两个字,过程是指解决问题的步骤,即先干什么后做什么. 基于该思想编写程序就好比在编写一条流水线,是一种机械式的思维方式 优点:复杂的问题流程化.进而简单化 缺点:可扩展 ...

  4. python第二十二天-----在做作业当中............

    作业 1, ATM:模拟实现一个ATM + 购物商城程序 额度 自定义实现购物商城,买东西加入 购物车,调用信用卡接口结账可以提现,手续费5%支持多账户登录支持账户间转账记录每月日常消费流水提供还款接 ...

  5. Python os.chmod

    os.chmod(path,mode) 这个方法应该很简单,只需要2个参数,一个是路径,一个是说明路径的模式,下面列出了这个用法中可以使用的一些常用的模式: stat.S_ISUID: Set use ...

  6. selenium webdriver (python) 第二版

    前言 对于大多软件测试人员来讲缺乏编程经验(指项目开发经验,大学的C 语言算很基础的编程知识)一直是难以逾越的鸿沟,并不是说测试比开发人员智商低,是国内的大多测试岗位是功能测试为主,在工作时间中,我们 ...

  7. python基础-7模块,第三方模块安装方法,使用方法。sys.path os sys time datetime hashlib pickle json requests xml

    模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才 ...

  8. python第二十七课——os模块

    演示os模块中常用的属性和函数: 1.os模块: 作用:管理文件和目录 属性: os.name:返回系统类型 常用的windows系统 --> nt os.environ:返回当前系统所有的环境 ...

  9. Python os.chmod() 方法

    概述 os.chmod() 方法用于更改文件或目录的权限.高佣联盟 www.cgewang.com 语法 chmod()方法语法格式如下: os.chmod(path, mode) 参数 path - ...

随机推荐

  1. 一步步搭建Retrofit+RxJava+MVP网络请求框架(一)

    首先,展示一下封装好之后的项目的层级结构. 1.先创建一个RetrofitApiService.java package com.xdw.retrofitrxmvpdemo.http; import ...

  2. codeforces #446 892A Greed 892B Wrath 892C Pride 891B Gluttony

    A  链接:http://codeforces.com/problemset/problem/892/A 签到 #include <iostream> #include <algor ...

  3. yii2数据条件查询-where专题

    条件查询 $customers = Customer::find()->where($cond)->all(); $cond就是我们所谓的条件,条件的写法也根据查询数据的不同存在差异,那么 ...

  4. sublime text 3 ctrl+b浏览器启动html

    sublime text 2 和3 都可以快速设置浏览器启动,本人在这里介绍如何不下插件启动浏览器.第一步:打开Tool-->build system  ---> new build sy ...

  5. tp中like多字段同时怎么模糊搜索

    例如 select * from tbl where a like '%123%' or b like '%123%' or c like '%123%' ;实现这样的功能,thinkphp怎么写呢? ...

  6. 关于C#中函数的认识

    对于C#语言中的函数,大概分之为函数的声明及其调用. 函数的声明: 1.函数的声明是指给一段代码取名称. 2.函数的声明位置必须在类中. 3.函数声明的语法: 函数声明的语法:static void ...

  7. Cocos2d-x 3.2Lua演示样例UserDefaultTest(用户默认配置)

    Cocos2d-x 3.2演示样例UserDefaultTest(用户默认配置) 本篇博客介绍Cocos2d-x 3.2演示样例中的UserDefaulstTest,我们在开发中可能须要用到一些默认配 ...

  8. 五:Java之Vector类专题

    据说期末考试要考到Vector 这个类,出于复习须要在这里就要好好整理下这个类了. 一.基本概念 Vector 是可实现自己主动增长的对象数组. java.util.vector提供了向量类(vect ...

  9. HTTP请求中怎样选择Get和Post方式

    在应用中最经常使用的Http请求无非是get和post,get请求能够获取静态页面,也能够把參数放在URL字串后面,传递给servlet.post与get的不同之处在于post的參数不是放在URL字串 ...

  10. java 对象的初始化过程

    PersonDemo p=new PersonDemo("lisi",20);这句话都做了什么事情? 因为new用到了PersonDemo.class,所以会先找到PersonDe ...