2016-10-17 1 views
1

私は、ファイルの複数のカップルとフォルダを持っている:私は、同時にファイルのカップル(A.TXTとa.json)を開きたいループのために使用pythonで同じ名前と異なる拡張子を持つ2つのファイルを同時に開く方法は?

:上

a.txt 
    a.json 

    b.txt 
    b.json 

ので。

Pythonで 'with'ステートメントを使用する方法はありますか?

+0

事前にファイル名を知っていますか、ディレクトリから読み込んでいますか?達成しようとしていることを具体的に説明できますか? – Mureinik

+0

実際の問題が何であるかはっきりしません。ファイル名のペアを見つける?ファイルを開く?一度に 'with'を使って複数のファイルを開く方法は次のとおりです:http://stackoverflow.com/questions/4617034/how-can-i-open-multiple-files-using-with-open-in-python/4617069#4617069 –

+0

はい私は事前にファイル名を知っています。彼らは同じ名前のカップルのシリーズですが、異なる拡張子です。私は、カップルで同じ名前であるが異なる拡張子を持つカップルを開かなければならない。 – CosimoCD

答えて

1

あなたは、ファイル名sans拡張子でキーを付けられた辞書を構築し、必要な拡張子に一致するファイルの数をカウントすることで、次のようなことができます。次に、辞書のファイルペアを繰り返し処理することができます。

import os 
from collections import defaultdict 

EXTENSIONS = {'.json', '.txt'} 

directory = '/path/to/your/files' 

grouped_files = defaultdict(int) 

for f in os.listdir(directory): 
    name, ext = os.path.splitext(os.path.join(directory, f)) 
    if ext in EXTENSIONS: 
     grouped_files[name] += 1 

for name in grouped_files: 
    if grouped_files[name] == len(EXTENSIONS): 
     with open('{}.txt'.format(name)) as txt_file, \ 
       open('{}.json'.format(name)) as json_file: 
      # process files 
      print(txt_file, json_file) 
+0

ありがとうmhwake !!!それは正しく動作します! – CosimoCD

関連する問題