2017-02-21 14 views
-1

Я попытаюсь привести пример для вопроса.Как создать несколько файлов для записи нескольких списков на лету с помощью Python?

Предположим, у нас есть 3 списка. например: -

list1 =['one','two','three'] 
list2=['a','b','c'] 
list3=['mike','jack','ram'] 

Или, скажем, что для каждой строки в файле есть значения для списка.

['one','two','three'] 
['a','b','c'] 
['mike','jack','ram'] 

Теперь я хочу написать три списка в трех разных файлах, создав их. Имена файлов должны быть автоматически сгенерированы например: -

file001.txt 
file002.txt 
file003.txt 
+3

Почему одновременно имеет значение; просто откройте и напишите один файл для каждого списка. Ваш реальный поток данных каким-то образом (тогда не был бы списком)? Это очень большой? –

+0

Я угадываю, что ваши значения в одном файле? что-то вроде ['one', 'two', 'three'] и следующей строки ['a', 'b', 'c'] ?? – everestial007

+0

@NickT Да.У меня более 50 документов, которые я проанализировал в 50 списков. Теперь я должен записать их в 50 файлов автоматически. –

ответ

1

Я предполагаю, что ваши данные находятся в консоли, и каждый список - это строка.

что-то вроде этого:

line1 =['one','two','three'] 
line2=['a','b','c'] 
line3=['mike','jack','ram'] 

Я слиты все данные в один списки списка

all_data = [line1] + [line2] + [line3] 

Это выше часть не является необходимым, если все значения списка являются построчно строка в одной переменной. Если нет, вы можете объединить их с помощью некоторого метода.

Теперь написать каждую строку (список значений) в другой файл:

count = 1 

for data in all_data: 
    output = open('file' + str(count) + '.txt', 'w') 
    output.write(','.join(data)) 
    count += 1 
    output.close() 

Это продолжает идти до последнего значения в списке. Итак, в зависимости от количества списков. Если вы хотите присоединиться к значениям внутри списка, вы можете изменить ''.join с чем-то желательным в одинарных кавычках ('').

Надеюсь, я помог.

+0

Этот ответ близок к моему решению. –

+0

принять ответ, если это поможет. – everestial007

0

Вы можете увидеть подробное объяснение here. Но суммировать все это, вы определяете объект типа файла, открывая файл (или создавая его, если он не существует), а затем записывать/читать/etc ...

+0

Что это связано с одновременностью? –

0

Используйте enumerate и string formatting для создания имен файлов.

s = 'file{:03}.txt' 
for n, lyst in enumerate((list1, list2, list3), 1): 
    fname = s.format(n) 
    with open(fname, 'w') as f: 
     #f.write(','.join(lyst)) 
     f.write('\n'.join(lyst)) 

Если какой-либо из пунктов не строки изменить запись в

 f.write('\n'.join(map(str, lyst))) 

Если списки так долго, что создание одной строки для записи в файл запрещается, изменить написать письмо на

 for thing in lyst: 
      f.write('{}\n'.format(thing)) 
+0

Я думаю, что OP хочет сгенерировать столько файлов, сколько там будет строк. Я думаю, что лучший подход - читать и писать каждую строку «на лету». – everestial007

+0

@ everestial007 - когда вы думаете, что какой-то метод лучше, вы должны сказать, почему это лучше. – wwii

+0

Я просто пытался указать, что если данные считываются и записываются по каждой строке (на лету), то будет работать независимо от количества строк (50 или миллионов). – everestial007