web-dev-qa-db-ja.com

pythonファイル名として変数文字列を挿入

スクリプトを実行するたびに、毎週または毎月のみを対象とするように、一意のファイル名でファイルファイルを作成しようとしています。そのため、ファイル名に日付を使用することにしました。

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

助けてくれてありがとう

13
jbaldwin

% name文字列の直後:

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

コードが機能しないのは、%ファイル。これは文字列形式ではなく、無効でもあります。

32
Volatility

あなたは次のようなことができます

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

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

5
avasal

そして、新しい文字列フォーマット方法で...

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

Peixeに非常に似ています。
パラメータとして追加する変数が出現順になっている場合、番号を言及する必要はありません。

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

さらに良いのは、python 3!

f = open(f'{name}.csv', 'wb')
0
Tom Lubenow