53 votes

Transformer un int en string en Python

Je souhaite pouvoir générer un certain nombre de fichiers texte portant le nom fileX.txt où X est un nombre entier :

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 nom de fichier = "ME" + la partie i pour que j'obtienne une liste de fichiers avec les noms : "ME0.txt", "ME1.txt", "ME2.txt", etc.

97voto

Florian Mayer Points 1174
x = 1
y = "foo" + str(x)

Veuillez consulter la documentation de Python : https://docs.python.org/3/library/functions.html#str

19voto

Ferdinand Beyer Points 27723

Pour les versions de Python antérieures à 2.6, utilisez l'option opérateur de formatage de chaînes de caractères % :

filename = "ME%d.txt" % i

Pour les versions 2.6 et ultérieures, utilisez l'option str.format() méthode :

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

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

Si vous avez plus de 10 fichiers à nommer de cette manière, vous pouvez ajouter des zéros initiaux afin que les fichiers soient classés correctement dans les listes de répertoires :

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

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

5voto

Frédéric Hamidi Points 123646

Soit :

"ME" + str(i)

Ou bien :

"ME%d" % i

La seconde est généralement préférée, en particulier si vous souhaitez construire une chaîne de caractères à partir de plusieurs jetons.

4voto

nmichaels Points 21955

Vous pouvez utiliser str() pour la couler, ou des formateurs :

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

1voto

Tony Veijalainen Points 2579

Voici la réponse pour l'ensemble de votre code :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X