web-dev-qa-db-fra.com

python insertion d'une chaîne de variable comme nom de fichier

J'essaie de créer un fichier un nom de fichier unique, chaque fois que mon script est exécuté, il est uniquement destiné à être hebdomadaire ou mensuel. j'ai donc choisi d'utiliser la date pour le nom du fichier.

f = open('%s.csv', 'wb') %name

c'est là que je reçois cette erreur.

Traceback (most recent call last):
File "C:\Users\User\workspace\new3\stjohnsinvoices\BabblevoiceInvoiceswpath.py", line 143,      in <module>
f = open('%s.csv', 'ab') %name
TypeError: unsupported operand type(s) for %: 'file' and 'str'

cela fonctionne si j'utilise un nom de fichier statique, y a-t-il un problème avec la fonction open, cela signifie que vous ne pouvez pas passer une chaîne comme celle-ci?

nom est une chaîne et a des valeurs telles que:

31/1/2013BVI

Un grand merci pour toute aide

13
jbaldwin

Vous devez mettre % name juste après la chaîne:

f = open('%s.csv' % name, 'wb')

La raison pour laquelle votre code ne fonctionne pas est que vous essayez de % un fichier qui n'est pas un formatage de chaîne et qui n'est pas non plus valide.

32
Volatility

vous pouvez faire quelque chose comme

filename = "%s.csv" % name
f = open(filename , 'wb')

ou f = open('%s.csv' % name, 'wb')

5
avasal

Et avec la nouvelle méthode de formatage des chaînes ...

f = open('{0}.csv'.format(name), 'wb')
4
peixe

Très similaire à peixe.
Vous n'avez pas à mentionner le nombre si les variables que vous ajoutez en tant que paramètres sont par ordre d'apparition

f = open('{}.csv'.format(name), 'wb')
3
Ran Galili

Encore mieux sont les f-strings dans python 3!

f = open(f'{name}.csv', 'wb')
0
Tom Lubenow