我有一个字符串列表。列表的每个字符串具有相同的格式。我想将每个字符串转换为一个类对象(如果这是最好的选项),所以我可以对类对象列表进行一些分析。
举个例子,
我有以下列表
ls_list = ['-rw-r--r-- 1 ahmed None 0 Apr 21 17:10 bar1',
'-rw-r--r-- 1 ahmed None 0 Apr 21 17:10 bar2',
'-rw-r--r-- 1 ahmed None 0 Apr 21 17:10 foo1',
'-rw-r--r-- 1 ahmed None 0 Apr 21 17:10 foo2']
我想将上面的每个字符串转换为一个有九个成员(perm等)的类。
答案 0 :(得分:2)
You don't want to do that.使用os.listdir()
和os.stat()
获取您想要的信息。
答案 1 :(得分:0)
这是做你要求的一种方式,但正如其他人所说,不要用它来解析ls的输出。此外,它假定输入字符串中只有8个空格区域分隔您的数据。如果任何数据子字符串也包含空格,则此代码将失败:
class FileAttribs(object):
ORDERED_ATTRIB_NAMES = ["permissions", "links", "owner",
"groups", "size", "month", "day", "time", "name"]
def __init__(self, lsString):
for (attrib, s) in zip(self.ORDERED_ATTRIB_NAMES, lsString.split()):
setattr(self, attrib, s)
if __name__ == '__main__':
ls_list = ['-rw-r--r-- 1 ahmed None 0 Apr 21 17:10 bar1',
'-rw-r--r-- 1 ahmed None 0 Apr 21 17:10 bar2',
'-rw-r--r-- 1 ahmed None 0 Apr 21 17:10 foo1',
'-rw-r--r-- 1 ahmed None 0 Apr 21 17:10 foo2']
files = []
for s in ls_list:
files.append(FileAttribs(s))
#do stuff with files, e.g.
for f in files:
print f.permissions, f.name
答案 2 :(得分:0)
你这样做:
import os
data = {}
for file in os.listdir('.'):
data[file] = os.stat(file)
这为您提供了当前目录中所有文件的信息,作为您请求的对象。然后可以检查这些,您可以使用其他功能来确定您获得的用户ID的用户名等。