2

私は持っている

def id_generator(size=6, chars=string.ascii_uppercase + string.digits):
     return ''.join(random.choice(chars) for x in range(size))
r = id_generator()
bat = open('MS-%s.bat',"w")%(r)

なぜこれが機能しないのですか?

TypeError: unsupported operand type(s) for %: 'file' and 'str'
4

5 に答える 5

2

あなたはおそらく言うつもりだった

bat = open('MS-%s.bat'%(r),"w")
于 2013-10-17T08:18:02.653 に答える
2

間違った場所があります。次のように記述する必要があります。

    bat = open('MS-%s.bat' % (r), "w")
于 2013-10-17T08:18:06.760 に答える
2

最後の行は次のようになります。

bat = open('MS-%s.bat' % r ,"w")

r の置換は MS-%s.bat に属しているためです。

于 2013-10-17T08:19:28.480 に答える
2

演算子.formatの代わりに関数を使用することをお勧めします。%ドキュメントから取得:

この文字列フォーマットの方法は、Python 3 の新しい標準であり、新しいコードでの文字列フォーマット操作で説明されている % フォーマットよりも優先されるべきです。

したがって、コードを変更できます。

bat = open('MS-{0}.bat'.format(r),"w")
于 2013-10-17T08:20:50.793 に答える