Python中将变量字符串作为文件名插入

27 投票
6 回答
193930 浏览
提问于 2025-04-17 14:17

我想在每次运行我的脚本时创建一个独特的文件名。我打算每周或每月这样做,所以我选择用日期来命名文件。

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

在这里我遇到了这个错误。

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'

如果我使用一个固定的文件名,它是可以工作的。那这个open函数有什么问题吗?是不是说不能像这样传递一个字符串?

name是一个字符串,里面的值像是:

31/1/2013BVI

非常感谢任何帮助。

6 个回答

7

这跟peixe很像。
如果你添加的参数变量是按照出现的顺序排列的,就不需要提到数字。

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

还有一个选择 - f-string格式化(参考链接):

f = open(f"{name}.csv", 'wb') 
7

你可以这样做:

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

或者用 f = open('%s.csv' % name, 'wb') 这行代码。

50

你需要把 % name 直接放在字符串后面:

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

你代码不工作的原因是因为你在尝试对一个文件使用 %,这不是字符串格式化,而且也是不合法的。

撰写回答