2016-10-17 3 views
1

У меня есть папка с несколькими пару файлов:Как открыть одновременно два файла с одинаковым именем и разным расширением в python?

a.txt 
    a.json 

    b.txt 
    b.json 

и так далее:

Использование для цикла я хочу открыть несколько файлов (a.txt и a.json) одновременно.

Есть ли способ сделать это, используя оператор 'with' в python?

+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 extension и с подсчетом количества файлов, соответствующих требуемым расширениям. Затем вы можете перебирать пары файлов открытия словарей:

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

Смежные вопросы