2011-06-28 10 views
0

私は、プロジェクトのcsvリストを、globで生成するファイルパスの配列と比較する論理的な方法を探しています。しかし、具体的にそのようにする必要はありません、私はちょうどプロジェクトのcsvリストファイルを取る必要があり、それらの上で動作します。csvファイルパスの配列を指定されたプロジェクト名の配列と比較する論理的な方法

CsvScrape = glob.glob('C:\Ryans_Copy_Test\*\*DATA.CSV') 

      for scrape_items in CsvScrape: 
       print scrape_items 

      CsvReader = csv.reader(open(CsvBrowse, 'rb'), dialect=csv.excel) 

      for reader_items in CsvReader: 
       print reader_items 

それは考えあまりまだ本当にありませんが、私が予定していたこと* DATA.CSVファイルのリストを生成し、それらへのcsvプロジェクトの私のリストに一致するようにした..私はどのような問題に実行していますよ私は適切な比較を行います(ファイルパス情報のグロブリストを削除して項目などを比較します)。入力したプロジェクト名が見つからないなどユーザーにどのように伝えますか。

私はいくつか持っています私が達成しようとしていることを説明するトラブルは、私が特定のアイテムについてもっと詳しく説明する必要がある場合は、私に知らせてください。

ありがとうございました。

+0

例のデータは素晴らしいでしょう。 – Udi

+1

ヒント:偶発的なバックスラッシュエスケープを避けるために '' C:\ Ryans_Copy_Test \ * \ * DATA.CSV''を 'r'C:\ Ryans_Copy_Test \ * \ * DATA.CSV''に変更してください – Udi

+0

これは私のサンプルデータ - http://pastebin.com/Hwzds0k3ここに私のコードです - > http://pastebin.com/vwqg0QeF – Ryan

答えて

1

:その場合にはあなただけの話されますので

scrape_items = map(os.path.basename, scrape_items)

をごreader_itemsは、おそらくリストのリストになるだろうreader_items = [row[0] for row in reader_items]

セットを使用して、そこにないものを見つける:

not_in_csv = set(reader_items).difference(scrape_items)

+0

あなたは説明していますか?scrape_items = map(os.path(os.path.basename、scrape_items) .basename、scrape_items)とreader_items = [行[read_itemsの行のための行[0]]、私は本当に追跡していない。しかし、私はセットと比較しています。 – Ryan

+0

「リストのすべての要素に関数を適用する」というバリエーションです。多分あなたはscrape_itemsの項目について 'basename_scrape_items = [] を見てきました: basename_scrape_items.append(os.path.basename(アイテム))' 'map'は高階関数と呼ばれています。 'scrape_items'のすべての要素に対して' os.path.basename'を呼び出して返します。 リスト内包と呼ばれる括弧は、同じことをしますが、より「ピジョンソニック」と見なされます。 これは '[<リスト内のの項目に何かを実行する}'を意味し、リスト全体が返されて処理されます。 あなたの入力には、そのような処理や他の種類の処理が必要な場合があります。 – nattofriends

+0

あなたは勝利しました、助けてくれてありがとう。実際には、globアイテムリストからファイルパスを削除しました。この時点で、basename_scrape_itemsと私のreader_itemsを比較し、一致を選択するだけです。 – Ryan

0

プロジェクト名とcsvファイル名とはどれくらい近いでしょうか?あなたは仕事をする正規表現が必要ですか、それともPROJECT_NAMEDATA.CSVになると予想されますか?グロブはフルパス名を返した場合

if os.path.basename(scrape_items)[:-8] == reader_items: 
    pass 
+0

これはC:\ path \ to \ file \ different \ [someprojectname] DATA.CSV – Ryan

+0

です。私は今日行っていますが、私は以下の答えで匿名とこれらの2つの変更を考えています:scrape_items = map(scrape_items = map(ラムダx:x [: - 8] .upper()、scrape_items) – Damian

+0

ダーリアンの助けをありがとう – Ryan

関連する問題