2016-12-08 7 views
0

私は何か非常に単純な操作をしようとしていますが、more_itertoolsを使用して、CSVファイル1からCSVファイル2への一意の行を、ただし、次のエラーが表示されます。CSV重複行メソッドが出力ファイルを見つけられない

IOError: [Errno 2] No such file or directory: u'first_file.csv' 

問題のコードは次のとおりです。私は、多くのCSVファイルを含む "newCsvFileList"というリストオブジェクトを反復処理しています。私はこれにmore_itertoolsライブラリを使用していて、スクリプトの先頭にあるunique_everseenメソッドをインポートしています。

outDir = filepath + "\\final_tables" 

for i in newCsvFileList: 
    outCsv = os.path.join(outDir, i) 
    if not os.path.exists(outDir): 
     try: 
      os.makedirs(outDir) 
     except OSError as exc: 
      if exc.errno != errno.EEXIST: 
       raise 
    with open(i, 'r') as f, open(outCsv, 'w') as out_file: 
     out_file.writelines(unique_everseen(f)) 

outDirディレクトリは正常に作成されていますが、明らかにoutCSVファイルは作成されていません。

+0

_input_ファイル(エラーのベース名ではありません)が見つかりません。これは、ファイルが現在実行されているディレクトリにないためです。 –

+0

ああ。疲れた目。 'oldCsv = os.path.join(inDir、i)'というパラメータを含めることで修正しました。ありがとう! :-)ねえ、誰かがいつか助けてくれるのか分かっているのに、質問をdownvoteする必要はありません。 – auslander

+0

私はこの質問が他の人に助けになるかどうか本当に分かりません。これは、タイプミスのようなものです。とにかく、とにかく助けてくれてうれしいです。 –

答えて

0

私は、徹底的に修正プログラムを投稿したいと考えました。

outDir = filepath + "\\final_tables" 
inDir = filepath + "\\input_tables" 

for i in newCsvFileList: 
    oldCsv = os.path.join(inDir, i) # This is what was missing 
    outCsv = os.path.join(outDir, i) 
    if not os.path.exists(outDir): 
     try: 
      os.makedirs(outDir) 
     except OSError as exc: 
      if exc.errno != errno.EEXIST: 
       raise 
    with open(i, 'r') as f, open(outCsv, 'w') as out_file: 
     out_file.writelines(unique_everseen(f)) 
+0

'outDir'と' inDir'に 'os.path.join'を使わないのはなぜですか? 'outDir = os.path.join(filepath、" final_tables ")' –

+0

理由はありませんが、それらも更新できます。 – auslander

関連する問題