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'

静的ファイル名を使用すると機能します。open 関数に問題がありますか?つまり、このような文字列を渡すことができないということですか?

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

ピクセによく似ています。
パラメータとして追加する変数が出現順である場合は、番号を指定する必要はありません

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

別のオプション - f-string フォーマット ( ref ):

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