为什么像 `"A %s", "B" % "C"` 的代码不将 "C" 插入第一个字符串?

16 投票
1 回答
59878 浏览
提问于 2025-04-16 00:15

我正在写一个脚本,目的是把当前的日期和时间保存为文件名,但我遇到了一个错误,提示“TypeError: not all arguments converted during string formatting”。我对Python还不太熟悉,可能漏掉了什么明显的东西。下面是我的代码:

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

1 个回答

30

你把字符串格式化放错地方了;它应该紧跟在要格式化的字符串后面:

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

不传任何格式化参数是可以的,就像你用的 "%s.sql" 这样,但如果你传了参数却没有传对数量就不行了(比如 "w" % (today) 传了一个参数,但 "w" 里没有格式化,所以会报错,提示你没有用完所有的参数)

撰写回答