2012-04-22 9 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

これは、あなたが尋ねることの1つの方法ですが、他にも触れているように、これを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:それからあなたは全く質問しませんでした。本当の問題があるときに戻る。 –

関連する問題