在python中,我可以使用os.listdir('dir')
轻松列出目录中的文件,但是如何轻松地将这些文件过滤到属于特定组的文件?这只是在使用find . -group "foo"
例如,我们说我有以下三个文件:
-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.txt
和faz.txt
,最好是list
个对象。
此similar question解决了在知道文件后如何获取组/用户的问题。我想将列表仅过滤到特定的组。
答案 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
module与Python'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)