web-dev-qa-db-fra.com

Transtyper un int en chaîne Python

Je veux être capable de générer un certain nombre de fichiers texte avec les noms fileX.txt où X est un 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 la partie filename = "ME" + i afin d'obtenir une liste de fichiers portant les noms suivants: "ME0.txt", "ME1.txt", "ME2.txt", etc.

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

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

88
Florian Mayer

Pour les versions Python antérieures à la version 2.6, utilisez l'opérateur opérateur de formatage de chaîne %) :

filename = "ME%d.txt" % i

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

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

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

Si vous avez plus de 10 fichiers à nommer de cette façon, vous pouvez ajouter des zéros non significatifs pour que les fichiers soient correctement classés dans les listes de répertoires:

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

Cela produira des noms de fichier tels que ME00.txt À ME99.txt. Pour plus de chiffres, remplacez le 2 Dans les exemples par un nombre plus élevé (par exemple, ME{0:03d}.txt).

19
Ferdinand Beyer

Non plus:

"ME" + str(i)

Ou:

"ME%d" % i

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

5
Frédéric Hamidi

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

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

Voici la réponse pour 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()
1
Tony Veijalainen