python中有没有等效的chgrp -R?

时间:2017-10-21 09:57:43

标签: python python-2.7 python-3.x python-os

我想以递归方式更改一个目录的组名,我使用os.chown()来做到这一点。但我在os.chown()中找不到像(chgrp -R)这样的递归标志。

2 个答案:

答案 0 :(得分:2)

为什么不把命令传递给shell?

os.system("chgrp -R ...")

答案 1 :(得分:1)

我写了一个函数来执行chgrp -R

def chgrp(LOCATION,OWNER,recursive=False):

  import os 
  import grp

  gid = grp.getgrnam(OWNER).gr_gid
  if recursive:
      if os.path.isdir(LOCATION):
        os.chown(LOCATION,-1,gid)
        for curDir,subDirs,subFiles in os.walk(LOCATION):
          for file in subFiles:
            absPath = os.path.join(curDir,file)
            os.chown(absPath,-1,gid)
          for subDir in subDirs:
            absPath = os.path.join(curDir,subDir)
            os.chown(absPath,-1,gid)
      else:
       os.chown(LOCATION,-1,gid)
  else:
    os.chown(LOCATION,-1,gid)