python插入变量字符串作为文件名

jba*_*win 13 python file python-2.7

我正在尝试创建一个文件文件唯一的文件名,每次我的脚本运行时,它只打算每周或每月.所以我选择使用日期作为文件名.

f = open('%s.csv', 'wb') %name
Run Code Online (Sandbox Code Playgroud)

是我收到此错误的地方.

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'
Run Code Online (Sandbox Code Playgroud)

如果我使用静态文件名,它是否有效,open函数是否有问题,这意味着你不能传递这样的字符串?

name是一个字符串,其值如下:

31/1/2013BVI
Run Code Online (Sandbox Code Playgroud)

非常感谢任何帮助

Vol*_*ity 33

你需要% name在字符串之后直接放置:

f = open('%s.csv' % name, 'wb')
Run Code Online (Sandbox Code Playgroud)

您的代码不起作用的原因是您尝试%的文件不是字符串格式,也是无效的.


ava*_*sal 5

你可以做点什么

filename = "%s.csv" % name
f = open(filename , 'wb')
Run Code Online (Sandbox Code Playgroud)

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


pei*_*ixe 5

并使用新的字符串格式化方法...

f = open('{0}.csv'.format(name), 'wb')
Run Code Online (Sandbox Code Playgroud)


Ran*_*ili 5

非常类似于peixe。
如果作为参数添加的变量是按出现顺序排列的,则不必提及数字

f = open('{}.csv'.format(name), 'wb')
Run Code Online (Sandbox Code Playgroud)

另一种选择 - f 字符串格式(ref):

f = open(f"{name}.csv", 'wb') 
Run Code Online (Sandbox Code Playgroud)


Tom*_*now 5

更好的是 python 3 中的 f 字符串!

f = open(f'{name}.csv', 'wb')
Run Code Online (Sandbox Code Playgroud)