2010-10-15 15 views
30

Je veux être en mesure de générer un certain nombre de fichiers texte avec les noms fileX.txt où X est un entier:Lancer un int à une chaîne en Python

for i in range(key): 
    filename = "ME" + i + ".txt" //Error here! Can't concat a string and int 
    filenum = filename 
    filenum = open(filename , 'w') 

Est-ce que quelqu'un d'autre sait comment faire le filename = "ME" + je part donc je reçois une liste de fichiers avec les noms: "ME0.txt", "ME1.txt", "ME2.txt", et etc

+2

Python est (plus) fortement typé que les langages comme Perl et Rexx, et ne fera pas de type implicite rsions. –

Répondre

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

S'il vous plaît lire la documentation Python: http://docs.python.org/

+14

Si nous allons être cyniques, "s'il vous plaît lire le message d'erreur et réfléchir pendant quelques secondes" –

19

Pour les versions de Python antérieures à 2.6, utiliser le string formatting operator %:

Pour 2,6 et par la suite, utiliser la méthode str.format():

filename = "ME{0}.txt".format(i) 

Bien que le premier exemple fonctionne toujours en 2.6, le second est préféré.

Si vous avez plus de 10 fichiers pour nommer cette façon, vous pouvez ajouter des zéros à gauche afin que les fichiers sont correctement ordonnés dans les listes de répertoire:

filename = "ME%02d.txt" % i 
filename = "ME{0:02d}.txt".format(i) 

Cela produira des noms de fichiers comme ME00.txt à ME99.txt . Pour plus de chiffres, remplacez le 2 dans les exemples avec un nombre plus élevé (par exemple, ME{0:03d}.txt).

5

Soit:

"ME" + str(i) 

Ou:

"ME%d" % i 

Le second est généralement préféré, surtout si vous voulez construire une chaîne de plusieurs jetons.

4

Vous pouvez utiliser str() pour le lancer, ou formatteurs:

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

ici réponse à votre code dans son ensemble:

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