国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術(shù)及教程分享平臺!
分類導(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)限的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

 

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

 

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

 

os的chmod

 

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

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

這么麻煩?

還好stat模塊提供了常量值可以直接對應(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)

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

寫個類似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模塊實現(xià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)容請搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲精品一级 | 亚洲第1页| 成人精品福利视频 | 亚洲 欧美 自拍偷拍 | 91精品久久久久久久久久久 | 亚洲一区二区中文字幕 | 91精品久久久久久久久久 | 久久国内| 蜜桃精品一区二区 | 欧美在线高清 | 亚洲精品久久久久久国 | 97碰碰碰| 在线a视频 | 欧洲一级毛片 | 欧美不卡 | 日韩av视屏 | 亚洲免费精品 | 日韩在线观看一区二区 | 精品国产鲁一鲁一区二区在线观看 | 中文字幕亚洲视频 | 操操操av| 精品日韩一区二区三区 | 久久色视频 | 中文在线视频 | 国产亚洲欧美美 | 一本色道久久综合狠狠躁篇的优点 | 中国一级黄色毛片视频 | 久热免费在线观看 | 日韩精品亚洲一区 | 久久精品一 | 伊人久久乐| 亚洲欧洲精品成人久久奇米网 | 狠狠的日 | 国产黄a三级三级看三级 | 日本在线观看 | 欧美高清成人 | 动漫精品一区二区三区 | 日韩精品在线一区 | 成人午夜激情 | 国产精品日本一区二区不卡视频 | 日本精品久久久 |