Создание нового файла, имя файла содержит переменную цикла, python

Я хочу запустить функцию над циклом, и я хочу хранить выходы в разных файлах, так что имя файла содержит переменную цикла. Вот пример

for i in xrange(10):
   f = open("file_i.dat",'w')
   f.write(str(func(i))
   f.close()

Как это сделать в python?

Ответ 1

Просто создайте имя файла с помощью + и str. Если вы хотите, вы также можете использовать старый стиль или форматирование нового стиля, чтобы сделать это, поэтому имя файла можно построить как:

"file_" + str(i) + ".dat"
"file_%s.dat" % i
"file_{}.dat".format(i)

Обратите внимание, что ваша текущая версия не указывает кодировку (вам следует) и неправильно закрывает файл в случаях ошибок (a with делает это):

import io
for i in xrange(10):
   with io.open("file_" + str(i) + ".dat", 'w', encoding='utf-8') as f:
       f.write(str(func(i))

Ответ 2

Используйте f = open("file_{0}.dat".format(i),'w'). На самом деле вы можете использовать что-то вроде f = open("file_{0:02d}.dat".format(i),'w'), которое будет ноль-pad имя, чтобы сохранить его на две цифры (так что вы получите "file_01" вместо "file_1", что может быть полезно для сортировки позже). См. документацию.

Ответ 3

Объединить переменную i в строку следующим образом:

f = open("file_"+str(i)+".dat","w")

ИЛИ

f = open("file_"+`i`+".dat","w") # (`i`) - These are backticks, not the quotes.

Смотрите здесь для других доступных технологий.

Ответ 4

Попробуйте следующее:

for i in xrange(10):
   with open('file_{0}.dat'.format(i),'w') as f:
       f.write(str(func(i)))