2014-11-03 133 views
0
import filecmp 

user = 't' 
con = open(user + '.txt','a') 
new = open(user + 'newfile.txt','a') 
if filecmp.cmp(con, new) == True: 
    print('good') 
else: 
    print('bad') 

文件t.txt和tnewfile.txt都在其中包含字母w。 它爲什麼會拋出TypeError?爲什麼會拋出一個Type Error?

TypeError: coercing to Unicode: need string or buffer, file found 
+0

作爲一個便箋,爲什麼你打開文件在'a'模式,如果你只是想讀它們?根據您的平臺,這可能會立即在文件末尾開始,甚至在每次操作後跳回到文件末尾(無論哪種方式,這意味着您將比較每個文件的最後0個字節,非常有趣)。這不是你的實際問題,但如果你的實際問題不存在,這意味着你總是打印「好」。 – abarnert 2014-11-03 19:22:46

回答

3

filecmp.cmp()函數將文件,即字符串,而不是打開文件的對象。

下面應該工作:

user = 't' 
con = user + '.txt' 
new = user + 'newfile.txt' 
if filecmp.cmp(con, new): 
    print('good') 
else: 
    print('bad') 

請注意,您不需要在這裏使用== True;這完全是多餘的,甚至容易出錯。

+0

非常感謝,我和我一直在這個問題上停留了一段時間。 – 2014-11-03 19:31:09

相關問題