2010-05-07 63 views
2

我在Python 2.6中打开一个随机生成名称的文件时遇到了问题。Python:打开()使用变量

import random 

random = random.randint(1,10) 

localfile = file("%s","wb") % random 

然后我得到一个错误信息,最后一行:

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

我只是不能由我自己想出解决办法,也没有与谷歌,但必须有一个治愈这个,我相信。

+3

您的基本认识是错误的。我认为你需要查看Python教程。 – 2010-05-07 12:13:37

+1

对不起,我刚刚开始使用Python – user335417 2010-05-07 12:18:24

+0

你不说你想要什么文件,但它看起来像你需要'tempfile'来代替。在标准库的文档中查找它。 – guillermooo 2010-05-07 15:52:54

回答

9

这可能会工作:

import random 

num = random.randint(1, 10) 
localfile = open("%d" % num, "wb") 

请注意,我已经改变了一些东西在这里:

  1. 你应该产生的随机数不分配给一个名为random可变您正在覆盖对模块random的现有参考。换句话说,如果用随机生成的数字覆盖random,您将无法再访问random.randint

  2. 格式化运算符(%)应该应用于要格式化的字符串,而不是调用file方法。

  3. 我猜file在Python 3中已被弃用。现在是时候习惯使用open而不是file

  4. 由于您正在将整数格式化为字符串,因此您应该编写"%d"而不是"%s"(尽管后者也可以)。

"%d" % num的另一种方法是str(num),这可能是多一点效率。

+0

谢谢! “%d”%num方法正常工作。 但我不知道如何在相同的情况下使用str(num)或int(num),似乎很难从PHP转移到Python。 – user335417 2010-05-07 12:27:30

+0

你可以通过执行open(str(num),'wb')来使用'str()','int()'在这种情况下不起作用,因为'open'要求第一个参数是一个'string ',它也不会那么做,因为'num'已经是'integer'了。 – 2010-05-07 12:31:56

+0

一定是我的错误,它上次不工作,但非常感谢您的回复! – user335417 2010-05-08 01:31:46

3

尝试:

localfile = file("%s" % random,"wb") 
+0

谢谢,这样做的工作! – user335417 2010-05-07 12:16:54