2012-04-22 8 views
0

문자열 목록이 있습니다. 목록의 각 문자열은 동일한 형식을가집니다. 각 문자열을 클래스 개체로 변환하고 싶습니다 (최선의 옵션 인 경우). 그래서 클래스 개체 목록을 분석 할 수 있습니다. 예를 들어 문자열을 Python의 클래스 객체로 변환

,

나는 9 명 (파마 등)가있는 클래스로 위의 문자열의 각 변환하고자하는 다음 목록을

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

있습니다.

+0

문자열을 객체로 변환하는 방법을 묻는 것이 좋습니다. 너는하지 않는다. 문자열 *은 객체입니다. 문자열의 정보를 변환하는 방법은 해당 정보가 무엇인지에 따라 다릅니다. 일반적인 대답은 없습니다. –

+0

붙여 넣은 코드를 "인용 부호로 묶으십시오". –

답변

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 
+0

이것은 정확히 내가 찾던 답변입니다. 고맙습니다. 모자를 쓰고 정확하게 내 게시물을 읽고 내 "단순한"예를 곁길로 추적하지 못하고 내가 파일 목록을 가지고 무엇인가를하려하고 있다고 생각했다. 굉장해. –

+0

그럴 경우 왼쪽의 체크 표시를 클릭하여 [답변 수락] (http://stackoverflow.com/faq#reputation) 할 수 있습니까? 또한, 다른 사람들은 귀하의 예를 기반으로 한 큰 실수처럼 보이는 것을 피하기 위해 노력하고있었습니다. 원하는 문자열 세트가 원하는 답변에서 사람들을 산만하게하는 것이 분명 해지면 대체 문자열 세트를 사용하도록 게시물을 편집하는 것이 좋습니다. – elhefe

2

You don't want to do that. 사용 os.listdir()os.stat() 원하는 정보를 얻을 수 있습니다.

+0

"ls -l"을 예로 사용했습니다. 내 문제는 파일 목록과 아무 관련이 없습니다. 그래도 감사합니다. - –

0

당신은 이런 식으로 뭔가를 수행

당신이 요청에 따라이, 당신에게 객체로 현재 디렉토리에있는 모든 파일에 대한 정보를 제공
import os 

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

. 이것들을 검사 할 수 있으며, 다른 함수를 사용하여 얻은 사용자 ID의 사용자 이름을 알 수 있습니다.

+0

"ls -l"을 예로 사용했습니다. 내 문제는 파일 목록과 아무 관련이 없습니다. 그래도 감사합니다. –

+0

@AhmedA : 그렇다면 전혀 질문하지 않았다. 진짜 문제가있을 때 돌아온다. –

관련 문제