Ответ 1
x = 1
y = "foo" + str(x)
Пожалуйста, прочтите документацию Python: http://docs.python.org/
Я хочу иметь возможность генерировать несколько текстовых файлов с именами fileX.txt, где X - некоторое целое число:
for i in range(key):
filename = "ME" + i + ".txt" //Error here! Can't concat a string and int
filenum = filename
filenum = open(filename , 'w')
Кто-нибудь еще знает, как сделать filename = "ME" + я part, поэтому я получаю список файлов с именами: "ME0.txt", "ME1.txt", "ME2.txt" и т.д.
x = 1
y = "foo" + str(x)
Пожалуйста, прочтите документацию Python: http://docs.python.org/
Для версий Python до 2.6 используйте оператор форматирования строк %
:
filename = "ME%d.txt" % i
Для 2.6 и более поздних версий используйте метод str.format()
:
filename = "ME{0}.txt".format(i)
Хотя первый пример все еще работает в версии 2.6, предпочтительнее второй.
Если у вас более 10 файлов, которые можно назвать таким образом, вам может потребоваться добавить ведущие нули, чтобы файлы упорядочивались правильно в списках каталогов:
filename = "ME%02d.txt" % i
filename = "ME{0:02d}.txt".format(i)
Это приведет к появлению имен файлов, таких как ME00.txt
- ME99.txt
. Для большего количества цифр замените 2
в примерах более высоким числом (например, ME{0:03d}.txt
).
Или:
"ME" + str(i)
Или:
"ME%d" % i
Второй предпочтительнее, особенно если вы хотите построить строку из нескольких токенов.
Вы можете использовать str()
для его создания или форматирования:
"ME%d.txt" % (num,)
Здесь ответ на ваш код целиком:
key =10
files = ("ME%i.txt" % i for i in range(key))
#opening
files = [ open(filename, 'w') for filename in files]
# processing
for i, file in zip(range(key),files):
file.write(str(i))
# closing
for openfile in files:
openfile.close()