Подтвердить что ты не робот

Выделение int для строки в Python

Я хочу иметь возможность генерировать несколько текстовых файлов с именами 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" и т.д.

4b9b3361

Ответ 1

x = 1
y = "foo" + str(x)

Пожалуйста, прочтите документацию Python: http://docs.python.org/

Ответ 2

Для версий 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).

Ответ 3

Или:

"ME" + str(i)

Или:

"ME%d" % i

Второй предпочтительнее, особенно если вы хотите построить строку из нескольких токенов.

Ответ 4

Вы можете использовать str() для его создания или форматирования:

"ME%d.txt" % (num,)

Ответ 5

Здесь ответ на ваш код целиком:

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()