Приведение int к строке в Python - PullRequest
43 голосов
/ 15 октября 2010

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

Кто-нибудь еще знает, как сделать имя файла = "ME" +я получаю список файлов с именами: "ME0.txt", "ME1.txt", "ME2.txt" и т. д.

Ответы [ 5 ]

86 голосов
/ 15 октября 2010
x = 1
y = "foo" + str(x)

Пожалуйста, смотрите документацию по Python: https://docs.python.org/2/library/functions.html#str

19 голосов
/ 15 октября 2010

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

5 голосов
/ 15 октября 2010

Или:

"ME" + str(i)

Или:

"ME%d" % i

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

4 голосов
/ 15 октября 2010

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

"ME%d.txt" % (num,)
1 голос
/ 15 октября 2010

Здесь ответьте для вашего кода в целом:

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