Запись каждого N элементов в списке в несколько текстовых файлов - PullRequest
1 голос
/ 12 июня 2019

Я пытаюсь записать каждое N-количество элементов во вложенном списке в несколько файлов .txt. Самое сложное - записать каждую группу из N-элементов в текстовый файл.

Мой список: list = ['item1a item1b item1c','item2a','item3a item3b','item4a item4b item4c','item5a','item6a item6b','item7a item7b item7c','item8a','item9a item9b']

Я хотел бы получить следующие выходные данные .txt файла:

text1.txt: item1a item1b item1c \n item2a \n item3a item3b
text2.txt: item4a item4b item4c \n item5a \n item6a item6b
text3.txt: item7a item7b item7c \n item8a \n item9a item9b

В настоящее время каждый вложенный список записывается в один файл .txt. Группировки не то, что мне нужно. Я так близок! Я думаю, что это должно быть незначительное исправление.

Например:

text1.txt: item1a item1b item1c
text2.txt: item2a
text3.txt: item3a item3b

Мой код

list = ['item1a item1b item1c','item2a','item3a item3b','item4a item4b item4c',
'item5a','item6a item6b','item7a item7b item7c','item8a','item9a item9b']
for item, biglist in enumerate(list):
    f=open(outdir_name + "text" + str(item+1)+".txt","w")
    f.write(biglist + "\n".format(list))
    f.close()

В настоящее время каждый вложенный список записывается в один файл .txt. Группировки не то, что мне нужно. Я так близок! Я думаю, что это должно быть незначительное исправление.

Например:

text1.txt: item1a item1b item1c
text2.txt: item2a
text3.txt: item3a item3b

1 Ответ

0 голосов
/ 12 июня 2019

Это делает работу!

items_per_file = 3
your_list=['item1a item1b item1c','item2a','item3a item3b','item4a item4b item4c','item5a','item6a item6b','item7a item7b item7c','item8a','item9a item9b']
for item in range(0, len(your_list), items_per_file):
    f=open(outdir_name + 'text' + str((item//items_per_file)+1)+".txt","w")
    f.write("\n".join(your_list[x] for x in range(item, min(item+items_per_file, len(your_list) - 1))))
    f.close()

Объяснение:

  • в соответствии с for -циклом, я делаю шаги items_per_file;
  • в строке f.open, имя файла item // items_per_file, потому что без // items_per_file вы получите text1, text4, text7, ...;
  • в f.write line, я пишу items_per_file элементов сразу;

Обновление:

  • теперь вы можете легко изменить число items_per_file
  • теперь он также должен работать для your_list из восьми элементов (не делится на items_per_file)
...