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.
x = 1
y = "foo" + str(x)
Veuillez consulter la documentation Python: https://docs.python.org/2/library/functions.html#str
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
).
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.
Vous pouvez utiliser str()
pour le lancer, ou les formateurs:
"ME%d.txt" % (num,)
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()