2010-06-21 3 views
15

Im tapant un script qui enregistre la date et l'heure actuelles en tant que nom de fichier mais je reçois une erreur indiquant "TypeError: tous les arguments ne sont pas convertis lors du formatage de chaîne". de quelque chose a manqué évident. Code ci-dessous:Python: Pas tous les arguments convertis lors de la mise en forme

from subprocess import Popen 
import datetime 

today = datetime.date.today() 

today = str(today) 

print today 

f = open("%s.sql", "w" % (today)) 
x = Popen(["mysqldump", "-u", "root", "-pucsdrv", "normalisationtion"], stdout = f) 
x.wait() 
f.close() 

Répondre

29

Vous mettez la chaîne de formatage au mauvais endroit; il doit être juste après la chaîne qui est en cours de formatage:

f = open("%s.sql" % (today), "w") 

Il est légal de ne pas transmettre la mise en forme des arguments, comme vous l'avez fait avec "%s.sql", mais il est illégal de transmettre des arguments, mais pas le montant droit ("w" % (today) passe un , mais il n'y a pas le formatage de chaînes en "w", vous obtenez une erreur que tous les arguments ont été utilisés)

+0

'>>> "% s% s% s" % ('asdf', 'asdf') 'me donne' TypeError: pas assez d'arguments pour la chaîne de format'. –

+0

@JonatanLittke Fixe –

4
f = open("%s.sql" % today, "w") 
Questions connexes