如何使用Python更改目錄許可權?


在Python中,可以使用subprocess模組和os模組的chmod()函式來修改目錄的許可權。

使用'subprocess'模組

Python中的subprocess模組提供各種函式來建立新的(子)程序並建立與I/O裝置的連線。

此模組有一個名為call()的函式,此函式幫助我們執行底層作業系統的shell命令。您只需要按推薦順序傳遞相應的命令和所需選項即可。

例如,在Unix作業系統中為使用者設定讀寫許可權的命令如下:

chmod -R +w <directory_name>

以下是使用call()方法執行此命令的語法:

subprocess.call(['chmod', '-R', '+w', 'my_folder'])

其中:

  • chmod:使用此命令可以修改底層作業系統中檔案/目錄的許可權。
  • -R:此標誌告訴chmod命令遞迴應用許可權更改。
  • +w mode:這是chmod命令的選項,表示“讀寫”許可權。它為指定目錄的使用者分配讀寫許可權。

示例

以下是一個Python示例,演示如何使用subprocess模組為目錄設定讀寫許可權:

import subprocess
subprocess.call(['chmod', '-R', '+w', 'my_folder'])

使用'os'模組

我們也可以使用os模組的chmod()函式為目錄設定許可權。以下是語法:

os.chmod(path, mode);

這將採用以下兩個引數:

  • Path:要更改其許可權的檔案或目錄的路徑。
  • Mode:所需的許可權以八進位制數表示。

生成路徑

在設定許可權之前,首先需要瀏覽所需的目錄,可以使用os.walk()方法。os.walk()方法的功能與透過自上而下或自下而上遍歷樹來生成目錄中的檔名相同,這意味著它從檔案開始,然後向上移動到根目錄。

os.path.join(root, d)函式幫助您連線兩個目錄並建立路徑。

示例

以下是使用chmod()方法為目錄設定許可權的示例,這裡我們建立一個遞迴函式,該函式接受路徑和許可權模式作為引數。在這個函式中,我們:

  • 使用walk()函式生成給定目錄的路徑,這裡我們將從根目錄到給定資料夾的所有目錄都新增到路徑中。
  • 使用chmod()方法為所需目錄設定指定的許可權(根據給定的模式引數)。
  • 呼叫此函式時,我們提供目錄名稱和表示讀寫模式的八進位制數 (0o777) 作為引數。
import os
#Changing the permissions of all files and directories Recursively
def change_permissions_recursive(path, mode):   
    
   # Traverse the directory tree starting from 'path' to top
   for root, dirs, files in os.walk(path, topdown=False):
	
      # Iterate over the directories in the 'root' directory
      for dir in [os.path.join(root, d) for d in dirs]:
         os.chmod(dir, mode)
        
      # Iterate over the files in the 'root' directory
      for file in [os.path.join(root, f) for f in files]:
         # Change the permissions of each file
         os.chmod(file, mode)

# Calling the function 
change_permissions_recursive('my_folder', 0o777)

更新於:2024年9月23日

6K+ 瀏覽量

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.