2014-10-30 72 views
0

我有一段代碼,自從我設法開始工作,但不明白爲什麼一種方法可行,而不是其他方法。Python函數在文件中追加文本改寫

以下代碼的作用好像open模式仍然是w而不是a。所以文本輸入簡單地相互覆蓋。

def new_todo(x): 
    file = open("todo.txt", "a") 
    file.write(x) 
    return x 

如果我採取相同的功能,並刪除return x追加模式現在的工作。爲什麼是這樣?

def new_todo(x): 
    file = open("todo.txt", "a") 
    file.write(x) 
+1

它們都應該以附加模式工作。如果我必須猜測,可能最初使用'w'將函數放在一個文件中,然後將其修改爲'a',但忘記了重新加載(不是導入)或重新啓動會話,所以您仍然擁有記憶中的舊定義? – user2304916 2014-10-30 04:27:19

+0

什麼是錯誤? – 2014-10-30 04:29:10

+0

@MauroBaraldi沒有錯誤。他們都會完成,但該文件的內容將被覆蓋或不會取決於返回的存在。 – 2014-10-30 04:31:58

回答

0

每user2304916的評論,Python 2裏的IDLE似乎不能從內存轉儲到aw模式的初始變化。

退出並重新加載IDLE解決了問題,現在return x的存在不會導致文本被覆蓋。

+0

'return x'的存在是完全不相關和誤導的。 – user2304916 2014-10-30 18:18:00

+0

@ user2304916考慮到這正是原始問題的內容,它根本就不是無關緊要的。 – 2014-11-06 22:18:26

+0

句子「現在返回x的存在不會導致文本被覆蓋。」是誤導。回報x的存在從未造成您的問題。 – user2304916 2014-11-06 23:09:56