在Python中生成几乎随机的文件名

时间:2013-10-17 08:15:45

标签: python

我有

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'

5 个答案:

答案 0 :(得分:3)

虽然现有答案在技术上是正确的,但为什么不使用tempfile模块。它已正确处理名称冲突等。

您可以定义dirsuffix,这样在某个目录中创建.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")