2015-10-10 132 views
1

這是我的代碼,我試圖以{「Example1」:「Example」}格式寫入JSON文件中 我得到一個錯誤:Python中的Json文件處理:將輸入寫入文件

db_file.write(json.dump({"Admin": keyPass}, db_file)) TypeError: must be str, not None

對於此代碼:

  keyPass = input("Create Admin Password » ")      
     with codecs.open(os.path.join(PATH), 'w') as db_file: 
      db_file.write(json.dump({"Admin": keyPass}, db_file)) 

這是怪異的一部分,它在文件創建罰款,以及如何我想它牛逼o格式化是正確的,但它仍然會出現上述錯誤。

任何人都可以請幫我在這裏需要糾正什麼?

回答

4

前兩個參數的函數傳入json.dump是:

  • OBJ:對象序列化
  • FP:一個類文件的對象,將數據寫入到

所以這裏發生了什麼,是json.dump的內部調用成功地將JSON編碼的字符串寫入文件,但是您試圖將它的輸出(永遠是None)傳遞給您的文件對象的寫入函數。

你有兩個選擇:

  1. 使用json.dumps(stringToEncodeAsJSON),而不是那樣json.dump,它會返回,然後可以使用您的文件對象的write功能
  2. 被寫入到文件的JSON格式的字符串
  3. 來自各地的刪除文件對象的寫函數調用傳入json.dump

更新:

下面是如何ÿ一些例子OU可以做到這一點

keyPass = input("Create Admin Password > ") 

with open(pathName, 'w') as db_file: 
    db_file.write(json.dumps({"Admin": keyPass})) 

with open(pathName, 'w') as db_file: 
    json.dump({"Admin": keyPass}, db_file) 
+0

哪些錯誤這一點:與codecs.open(os.path.join(PATH), 'W')爲db_file: 那樣json.dump({ 「管理」:關鍵通過}) – Csarg

+0

這與原始問題有關嗎? 你打電話給json.dump但沒有傳入文件指針參數,這是必需的 –

+0

我試圖解決這個問題,但我不認爲我理解它。 – Csarg