我有
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'
答案 0 :(得分:3)
虽然现有答案在技术上是正确的,但为什么不使用tempfile
模块。它已正确处理名称冲突等。
您可以定义dir
和suffix
,这样在某个目录中创建.bat
文件就可以了。
答案 1 :(得分:2)
你可能想说
bat = open('MS-%s.bat'%(r),"w")
答案 2 :(得分:2)
有一个错位,你应该这样写:
bat = open('MS-%s.bat' % (r), "w")
答案 3 :(得分:2)
最后一行应该是:
bat = open('MS-%s.bat' % r ,"w")
因为r的替换属于MS-%s.bat。
答案 4 :(得分:2)
我建议您使用.format
函数而不是%
运算符。取自doc:
这种字符串格式化方法是Python 3中的新标准,应该优先于新代码中字符串格式化操作中描述的%格式。
所以你可以修改你的代码:
bat = open('MS-{0}.bat'.format(r),"w")