2010-05-07 64 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