@Timebird

Как создать списки с динамически изменяющимися именами?

Чтобы открыть файл с изменяющимся именем, пользуются командой:
files = [open('textfile_number_{}.txt'.format(i), 'w') for i in list_with_numbers]

Нужно подобно такому создать кучу списков с разными именами, что-то типа такого:
[list_for_new_freq_{}.format(i) = [] for i in len(files)]

Однако этот код, ест-но, не верен. Как его подправить, чтобы избежать использования словарей?
  • Вопрос задан
  • 427 просмотров
Решения вопроса 1
Пригласить эксперта
Ответы на вопрос 2
@3dr1aN
Может лучше в словарь записывать?
Если все же нужно, используйте exec() например.
Ответ написан
@abcd0x00
>>> numbers = (1, 2, 3)
>>> fnames = ('file{}.txt'.format(i) for i in numbers)
>>> files = [open(i, 'w', encoding='utf-8') for i in fnames]
>>> files
[<_io.TextIOWrapper name='file1.txt' mode='w' encoding='utf-8'>, <_io.TextIOWrapper name='file2.txt' mode='w' encoding='utf-8'>, <_io.TextIOWrapper name='file3.txt' mode='w' encoding='utf-8'>]
>>> [i.close() for i in files]
[None, None, None]
>>>


[guest@localhost t]$ ls
file1.txt  file2.txt  file3.txt
[guest@localhost t]$


Вообще, файлы принято открывать через with. Если особой необходимости нет для ручного открытия и закрытия, то надо использовать with.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы