0

我有一个字符串列表。列表的每个字符串具有相同的格式。我想将每个字符串转换为一个类对象(如果这是最好的选择),所以我可以对类对象列表进行一些分析。

举个例子,

我有以下列表

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']

我想将上述每个字符串转换为一个有九个成员(烫发等)的类。

4

3 回答 3

2

你不想那样做。使用os.listdir()os.stat()获取您想要的信息。

于 2012-04-22T01:44:37.820 回答
0

你这样做是这样的:

import os

data = {}
for file in os.listdir('.'):
    data[file] = os.stat(file)

这会按照您的要求为您提供当前目录中所有文件的信息,作为对象。然后可以检查这些,您可以使用其他功能来找出您获得的用户 ID 的用户名等。

于 2012-04-22T05:18:04.163 回答
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
于 2012-04-22T01:06:03.807 回答