激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

腳本之家,腳本語(yǔ)言編程技術(shù)及教程分享平臺(tái)!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Python - Python3通過chmod修改目錄或文件權(quán)限的方法示例

Python3通過chmod修改目錄或文件權(quán)限的方法示例

2020-06-09 10:22lucky_白楊 Python

這篇文章主要介紹了Python3通過chmod修改目錄或文件權(quán)限的方法示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

 

簡(jiǎn)單的介紹下linux文件權(quán)限

 

linux中,文件的權(quán)限分為"所有者、組、其他用戶"三個(gè)角色,每個(gè)角色由3個(gè)bit位表示它的權(quán)限,3bit從左到右分別為讀寫執(zhí)行三個(gè)權(quán)限,3bit的值范圍為0~7。所以如果直接在linux執(zhí)行chmod 777 xxx.sh代表,將xxx.sh文件賦予所有者、組、其他用戶這三個(gè)角色對(duì)xxx.sh文件的讀寫執(zhí)行權(quán)限。

 

os的chmod

 

python的os模塊負(fù)責(zé)操作系統(tǒng)層面的操作。修改文件權(quán)限可以通過os的chmod方法來(lái)操作。
os.chmod(path, mode)
方法的path指向要賦權(quán)限的文件或目錄;
mode為權(quán)限值,也就是文件權(quán)限的9位bit的10進(jìn)制數(shù),取值范圍0~511;

比如我們要將xxx.sh文件賦予所有者讀權(quán)限,其他角色沒有任何的權(quán)限,則linux中對(duì)應(yīng)的文件權(quán)限用ls -l查看為:-r---------;第一個(gè)-是文件類型,后面的9個(gè)位就代表了整個(gè)文件的權(quán)限,對(duì)應(yīng)二進(jìn)制為100000000,那么我們的mode應(yīng)該取值為256;
所以上面的權(quán)限修改代碼為os.chmod("xxx.sh",256)。

這么麻煩?

還好stat模塊提供了常量值可以直接對(duì)應(yīng)使用。

 

常量 描述
S_IRWXU 所有者讀寫執(zhí)行權(quán)限,代表值:448
S_IRUSR 所有者讀,代表值:256
S_IWUSR 所有者寫,代表值:128
S_IXUSR 所有者執(zhí)行,代表值:64
S_IRWXG 用戶組讀寫執(zhí)行權(quán)限,代表值:56
S_IRGRP 用戶組讀,代表值:32
S_IWGRP 用戶組寫,代表值:16
S_IXGRP 用戶組執(zhí)行,代表值:8
S_IRWXO 其他用戶讀寫執(zhí)行,代表值:7
S_IROTH 其他用戶讀,代表值:4
S_IWOTH 其他用戶寫,代表值:2
S_IXOTH 其他用戶執(zhí)行,代表值:1

 

如下的代碼是將xxx.sh文件賦予所有者讀寫執(zhí)行、用戶組讀執(zhí)行、其他用戶讀的操作,即-rwxr-xr--:

?
1
2
3
4
import os
import stat
 
os.chmod("xxx.sh", stat.S_IRWXU+stat.S_IRGRP+stat.S_IXGRP+stat.S_IROTH)

什么?感覺常量記不住?還是不方便?

寫個(gè)類似chmod 777的使用方式的util吧…

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import re
import os
import stat
 
RD, WD, XD = 4, 2, 1
BNS = [RD, WD, XD]
MDS = [
  [stat.S_IRUSR, stat.S_IRGRP, stat.S_IROTH],
  [stat.S_IWUSR, stat.S_IWGRP, stat.S_IWOTH],
  [stat.S_IXUSR, stat.S_IXGRP, stat.S_IXOTH]
]
 
def chmod(path, mode):
  if isinstance(mode, int):
    mode = str(mode)
  if not re.match("^[0-7]{1,3}$", mode):
    raise Exception("mode does not conform to ^[0-7]{1,3}$ pattern")
  mode = "{0:0>3}".format(mode)
  mode_num = 0
  for midx, m in enumerate(mode):
    for bnidx, bn in enumerate(BNS):
      if (int(m) & bn) > 0:
        mode_num += MDS[bnidx][midx]
  os.chmod(path, mode_num)
 
if __name__ == '__main__':
  chmod("xxx.sh", "744") #744代表所有者讀寫執(zhí)行,組和其他的權(quán)限只有讀

類似的你也可以讓它支持類似chmod u+rwx,g+rw,o+rw xxx.sh的使用方式。

注意:os.chmod貌似沒有辦法遞歸修改目錄下所有文件的權(quán)限?那使用下面的subprocess直接調(diào)用命令吧…

 

subprocess直接調(diào)用chmod命令

 

subprocess模塊實(shí)現(xiàn)了子進(jìn)程運(yùn)行。可以在子進(jìn)程中調(diào)用操作系統(tǒng)命令或者執(zhí)行shell,并獲取stdout、stderr。

?
1
2
3
4
5
6
7
8
import subprocess
 
if __name__ == '__main__':
  cmd = ['chmod', "-R", "777", "xxx.sh"]
  res = subprocess.run(cmd, universal_newlines=True, stdout=subprocess.PIPE,
             stderr=subprocess.PIPE, shell=False)
 
  print(res.returncode, res.stdout, res.stderr)

 到此這篇關(guān)于Python3通過chmod修改目錄或文件權(quán)限的方法示例的文章就介紹到這了,更多相關(guān)Python3 chmod修改目錄或文件權(quán)限內(nèi)容請(qǐng)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文鏈接:https://blog.csdn.net/u013632755/article/details/106599210

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 羞羞的视频免费在线观看 | 久久久精品综合 | 综合精品一区 | 偷偷草网站 | 欧美在线 | 亚洲 | 蜜桃视频日韩 | a一级黄色毛片 | 黄色成人在线播放 | 国内精品久久久久久2021浪潮 | 精品一区二区在线播放 | 九九黄色| 制服下着マ○コ航空5 | 日本精品久久久一区二区三区 | 91 免费看片 | 成人在线观看一区 | 依依成人综合 | 日韩视频一区二区三区在线观看 | 成人一区二区三区四区 | 国产精品久久久久久久久久三级 | 日韩中文字幕一区二区三区 | av电影在线免费观看 | 成人免费久久网 | 久久精品一区二区三区四区五区 | 久久久久97国产精 | 婷婷一区二区三区四区 | 久色成人网 | 日本一区二区精品 | 污污网站入口 | 91精品久久久久久久久 | 亚洲福利视 | 国产艳妇av视国产精选av一区 | 视频在线亚洲 | 亚洲一区二区三区在线看 | 色七七网站 | 久久tv免费国产高清 | 午夜天堂在线视频 | av在线大全| 中国免费黄色 | 操碰网 | av免费在线观看免费 | 日本精品久久久久 |