22

每次我的脚本运行时,我都会尝试创建一个具有唯一文件名的文件。我只打算每周或每月这样做。所以我选择使用日期作为文件名。

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'

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

name 是一个字符串,具有以下值:

31/1/2013BVI

非常感谢您的帮助。

4

7 回答 7

46

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

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

您的代码不起作用的原因是因为您正在尝试%一个文件,该文件不是字符串格式,而且也是无效的。

于 2013-01-31T09:27:34.907 回答
6

你可以做类似的事情

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

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

于 2013-01-31T09:27:27.293 回答
5

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

f = open('{0}.csv'.format(name), 'wb')
于 2013-01-31T09:33:25.513 回答
5

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

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

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

f = open(f"{name}.csv", 'wb') 
于 2018-02-15T08:21:32.383 回答
3

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

f = open(f'{name}.csv', 'wb')
于 2019-05-09T16:15:39.850 回答
0

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

于 2020-05-08T23:29:15.377 回答
0
import hashlib

filename = file_for_download
with open(filename, "rb") as f:
    bytes = f.read()  # read entire file as bytes
    msg_hash = hashlib.sha256(bytes).hexdigest();
    print(f"MSG_HASH = {msg_hash}")
于 2022-02-25T09:42:38.507 回答