Python - 列出属于特定组'

时间:2015-09-15 19:31:50

标签: python

在python中,我可以使用os.listdir('dir')轻松列出目录中的文件,但是如何轻松地将这些文件过滤到属于特定组的文件?这只是在使用find . -group "foo"

的unix中完成的

例如,我们说我有以下三个文件:

-rwxrwxrwx 1 foo foo 0 Sep 15 08:57 foo.txt
-rwxrwxrwx 1 bar bar 0 Sep 15 08:34 bar.txt
-rwxrwxrwx 1 foo foo 0 Sep 15 08:57 faz.txt

如何只获取属于'组的文件? foo使用python?

返回的文件应该是foo.txtfaz.txt,最好是list个对象。

similar question解决了在知道文件后如何获取组/用户的问题。我想将列表仅过滤到特定的组。

2 个答案:

答案 0 :(得分:2)

这可能有效:

import os
import grp
gid = grp.getgrnam('foo').gr_gid

file_list = []
for fle in os.listdir('dir'):
    if os.stat(fle).st_gid == gid:
        file_list.append(fle)

或作为单行(列表理解):

file_list = [fle for fle in os.listdir('dir') if os.stat(fle).st_gid == gid]

答案 1 :(得分:0)

grp modulePython's list comprehensions一起提供帮助,非常便于过滤数组。

func styleCustomNavigationBar() {

    self.navigationController?.setNavigationBarHidden(true, animated: false)
    var navigationBar : CustomNavigationBar = CustomNavigationBar(frame: CGRectMake(0, 0, CGRectGetWidth(self.view.bounds), 64.0))
    var navigationItem : UINavigationItem = UINavigationItem()
    var backButton : UIBarButtonItem = UIBarButtonItem(title: "Back", style: UIBarButtonItemStyle.Plain, target: self, action: "backButtonDidClicked")
    navigationItem.leftBarButtonItem = backButton
    navigationBar.items = [navigationItem]
    self.view.addSubview(navigationBar)
}

如果您只满足于群组ID,则可以完全避免require 'thread/pool' pool = Thread.pool(50) Content.all.each do |content| pool.process do grab_and_store(content) end end pool.shutdown

[f for f in os.listdir("dir") if grp.getgrgid(os.stat(f).st_gid).gr_name == "foo"]

(当然,将grp替换为实际的组ID)