Python第二十二天 stat模塊 os.chmod方法 os.stat方法 pwd grp模塊node
stat模塊描述了os.stat(filename)返回的文件屬性列表中各值的意義,根據stat模塊讀取os.stat()中的值的意思
簡單來講,os.stat是將文件的相關屬性讀出來,而後用stat模塊來處理mysql
os.statsql
返回一個相似字典對象(stat_result對象,包含10個元素),結果類型是posix.stat_resultshell
stat(path) -> stat result 數據庫
獲取stat結果windows
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模塊app
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.chmod() 方法測試
os.chmod() 方法用於更改文件或目錄的權限。
語法
chmod()方法語法格式以下,該方法沒有返回值:
os.chmod(path, mode)ui
參數
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()