誰かが私が間違っていることを理解するのを手伝ってもらえますか?ldifファイルとcsvファイルを取得し、csvファイルの内容をldifの各レコードの最後に追加するPythonシェルスクリプトを作成しています。何かのようなもの:
サンプルCSV:
「KEY」、「VALUE」 "abc"、 "def" 「foo」、「bar」 「qwop」、「flop」
サンプル.ldif:
dn:アジズ cn:Aziz_09 dn:カール cn:Carl_04
python myscript.py "sample.ldif""sample.csv"の後
dn:アジズ cn:Aziz_09 キー:値 abc:def foo:bar qwop:フロップ dn:カール cn:Carl_04 キー:値 abc:def foo:bar qwop:フロップ
これまでのところ、私のコードはコンパイルされますが、ファイルが正しく変更されません。作成時にcsvファイルのパス名文字列を取得し、キーをリストフィールドに格納し、値をリストフィールドに格納するオブジェクトを作成しています。次に、ldifファイルを開き、レコード間のエスケープ文字を解析して、各レコードの最後にリストフィールド(KEYおよびVALUE)を挿入します。
sys、csvをインポート #csvを開き、その配列にcsvデータを設定できる新しいオブジェクトを作成します クラスContainer(object): def __init __(self、filename = None、keys = None、values = None): self.filename=ファイル名 self.keys = [] self.values = [] #self.filenameを開き、0行目と1行目をそれぞれキーと値に入れます def csv_to_list(): open(self.filename、'rb')をfとして使用: リーダー=csv.reader(f) リーダーの行の場合: self.keys = row [0] self.values = row [1] haruhi = Container( "./ content / test_pairs.txt") haruhi.csv_to_list #読み取り/書き込みのためにldif_record_a.pyへのコマンドライン呼び出しの最初の引数を開きます open(sys.argv [1]、'r +')をf1として使用します。 lines = [x.strip()for x in f1]#各行を要素としてリストを作成します f1.truncate(0) f1.seek(0) カウント=0 行のxの場合: xの場合: f1.write(x +'\ n') そうしないと: f1.write( "{0}:{1} \ n \ n" .format(haruhi.keys [count]、haruhi.values [count])) カウント=カウント+1 f1.write( "{0}:{1} \ n \ n" .format(haruhi.keys [count]、haruhi.values [count]))
Pythonは初めてです!ヘルプ、アドバイス、および/またはリソースの方向性をいただければ幸いです。ありがとうSO