Python 文字檔案的讀取和儲存 By 彭彭

Поделиться
HTML-код
  • Опубликовано: 1 окт 2024
  • 喜歡彭彭的教學影片嗎?點擊「加入」按紐取得更多會員服務哦。
    加入會員: / @cwpeng-course
    1. 檔案操作流程
    1.1 開啟檔案、操作檔案、關閉檔案
    1.2 開啟模式、檔案編碼 UTF-8
    1.3 最佳實務:使用 with ... as ... 語法
    1.4 檔案物件
    2. 讀取檔案
    2.1 一次讀取全部:read()
    2.2 逐行讀取資料:使用 for 迴圈
    3. 寫入檔案
    3.1 寫入字串到檔案中:write(字串)
    3.2 寫入換行符號:

    4. 讀取、儲存 JSON 格式的資料
    4.1 載入內建的 json 模組
    4.2 讀取資料:json.load(檔案物件)
    4.3 寫入資料:json.dump(資料, 檔案物件)
    更多學習資訊,
    請到彭彭的課程網站:training.pada-...

Комментарии • 637

  • @aapplefish
    @aapplefish 4 года назад +20

    *檔案操作流程*
    開啟檔案 > 讀取或寫入 > 關閉檔案
    *開啟檔案*
    檔案物件 = open(檔案路徑,mode=開啟模式)
    讀取模式 - r
    寫入模式 - w
    讀寫模式 - r+
    檔案物件.read()
    for 變數 in 檔案物件:
    從檔案依序讀取每行文字到變數中
    import json
    讀取到的資料 = json.load(檔案物件)
    *寫入檔案*
    檔案物件.write(字串) # 把要儲存的內容放在字串的位置
    檔案物件.write("這是範例文字
    ")
    import json
    json.dump(要寫入的資料,檔案物件)
    *關閉檔案*
    檔案物件.close()
    with open(檔案路徑,mode=開啟模式) as 檔案物件:
    讀取或寫入檔案的程式
    # 以上區塊會自動、安全地關閉檔案
    # 不需要另外再寫close()
    # -------
    # 儲存檔案
    # -- file.py --
    file = open("data.txt", mode="w") # 開啟
    file.write("Hello File") # 操作
    file.close() # 關閉
    # 同個檔案再寫一次,舊檔會被覆蓋
    file = open("data.txt", mode="w") # 開啟
    file.write("Hello File
    Second Line") # 操作
    file.close() # 關閉
    # 避免打中文會出現亂碼UTF-8
    file = open("data.txt", mode="w", encoding="utf-8") # 開啟
    file.write("測試中文
    好棒棒") # 操作
    file.close() # 關閉
    # 最佳實務寫法
    with open("data.txt", mode="w", encoding="utf-8") as file:
    file.write("測試中文
    好棒棒")
    # 讀取檔案
    with open("data.txt", mode="r", encoding="utf-8") as file:
    data = file.read()
    print(data)
    >>> 測試中文
    >>> 好棒棒
    # 讀取檔案
    # 把檔案中的數字資料,一行行讀取出,並計算總和
    with open("data.txt", mode="w", encoding="utf-8") as file:
    file.write("5
    3")
    sum = 0
    with open("data.txt", mode="r", encoding="utf-8") as file:
    for line in file: # 一行行讀取
    sum+=int(line)
    print(print)
    >>> 8
    # 使用JSON格式讀取、複寫檔案
    # -- config.json --
    {
    "name":"My Name",
    "version":"1.2.5"
    }
    # -- file.py --
    import json
    # 從檔案中讀取 JSON 資料,放入變數data裡面
    with open("config.json", mode="r") as file:
    data = json.load(file)
    print("name", data.name)
    print("version", data.version)
    >>> AttributeError
    # -----
    import json
    with open("config.json", mode="r") as file:
    data = json.load(file)
    print(data) # data 是一個字典資料
    print("name", data["name"])
    print("version", data["version"])
    >>> {"name":"My Name", "version":"1.2.5"}
    >>> name My Name
    >>> version 1.2.5
    # -----
    import json
    with open("config.py", mode="r") as file:
    data = json.load(file)
    print(data)
    data["name"] = "New Name" # 修改變數資料
    # 把最新的資料複寫回檔案中
    with open("config.json", mode="r") as file:
    data = json.dump(data, file)
    >>> {"name":"New Name", "version":"1.2.5"}

    • @cwpeng-course
      @cwpeng-course  4 года назад +1

      謝謝 ~~

    • @willylin7499
      @willylin7499 4 года назад +1

      幫更正最後一段
      #-----
      import json
      with open("config.json", mode="r") as file:
      data = json.load(file)
      print(data)
      data["name"] = "New Name" # 修改變數資料
      # 把最新的資料複寫回檔案中
      with open("config.json", mode="w") as file:
      data = json.dump(data, file)
      >>> {"name":"New Name", "version":"1.2.5"}

  • @winstonchang5879
    @winstonchang5879 3 года назад +27

    彭彭老師算是台灣唯一的程式教學,謝謝你讓我們可以清楚的吸收內容,就不用去練英聽,加油💪

    • @cwpeng-course
      @cwpeng-course  3 года назад +8

      其實還是有很多其他的老師在教學哦 :) 不過謝謝回饋哪,很高興對你有幫助,加油 💪💪

  • @carinachen3362
    @carinachen3362 4 года назад +4

    #儲存檔案
    file=open("13data.txt",mode="w",encoding="utf-8") #開啟
    file.write("Hello file
    好棒棒")#操作
    file.close()#關閉
    with open("13-1data.txt",mode="w",encoding="utf-8") as file:
    file.write("5
    3")
    #讀取檔案
    with open("13-1data.txt.",mode="r",encoding="utf-8") as file:
    data=file.read()
    print(data)
    #把檔案中的數字資料,一行一行讀取出來並計算總合
    sum=0
    with open("13-1data.txt.",mode="r",encoding="utf-8") as file:
    for line in file: #一行一行的讀取
    sum=sum+int(line)
    print(sum)
    #使用json格式讀取,複寫資料
    import json
    with open("13config.json", mode="r") as file:
    data=json.load(file)
    print("name:",data["name"])# data是一個字典資料
    print("version:",data["version"])
    data["name"]="new name"#修改變數中的資料
    # 把最新的資料複寫回檔案中
    with open("13config.json", mode="w") as file:
    data=json.dump(data, file)

  • @jasonyu8020
    @jasonyu8020 4 года назад +4

    # 檔案操作流程:1.開啟檔案 2.讀取或寫入 3.關閉檔案
    # 第一步開啟檔案:
    # 開啟檔案基本語法:
    # 檔案物件=open(檔案路徑,mode=開啟模式)
    # 開啟模式有三種:讀取模式:r,寫入模式:w,讀寫模式:r+
    # 第二步讀取或寫入:
    # 讀取全部文字語法:
    # 檔案名稱.read()
    # 第三步關閉檔案:
    # 基本語法:檔案物件.close()
    # 範例一:如何開啟中文檔案,並關閉檔案
    # 開啟後會在專案資料夾裡產生一個檔案
    # 如果想打中文,沒有多打這一行 encoding="utf-8",會出現下列錯誤資訊:
    # UnicodeEncodeError: 'charmap' codec can't encode characters in position 0-2: character maps to
    file=open("data.txt",mode="w",encoding="utf-8")
    file.write("Hello File
    Second line")
    file.write("好棒棒")
    file.close()
    # 範例二:最佳實務
    # with open(檔案路徑,mode=開啟模式) as 檔案物件:
    # 以上區塊會自動安全的關閉檔案
    with open("data1.txt",mode="w",encoding="utf-8") as file1:
    file1.write("測試中文")
    with open("data1.txt", mode="r", encoding="utf-8") as file1:
    data=file1.read()
    print(data)
    # 範例三:把檔案中的的數字資料,一行一行的讀取出來,並計算總合
    # 如果要一次讀取一行,可以用 for 迴圈:
    # for 變數 in 檔案物件:
    # 從檔案依序讀取每行文字到變數中
    with open("data2.txt",mode="w") as file2:
    file2.write("5
    3")
    sum=0
    with open("data2.txt",mode="r") as file2:
    for line in file2:
    sum+=int(line)
    print(sum)
    # 範例四: 如何讀取json檔案,並列印json檔案字典裡的資料
    # 讀取JSON格式:
    # import json
    # 讀取到的資料=json.load(檔案物件)
    # 寫入JSON格式:
    # import json
    # json.dump(要寫入的資料,檔案物件)
    import json
    with open ("config.json",mode="r") as file3:
    data=json.load(file3) #data是一個字典資料
    print("name:",data["name"])
    print("version:",data["version"])
    # 範例五: (承上)如何修改json檔案內的資料: 1.先修改2.再複寫
    # 從檔案中讀取 json 資料,放入變數 data 裡面
    data["name"]="New Name1" #修改變數中資料
    with open("config.json","w") as file4:
    json.dump(data,file4) #最後,把最新的資料複寫回檔案中

  • @tingjoy357
    @tingjoy357 6 лет назад +30

    彭彭老师讲的非常的通俗易懂,而且教学氛围感觉很棒,学东西,像是在玩一样,非常的有条理并且娓娓道来,非常感谢你的课程,让一头雾水的我,终于搞明白了。

    • @cwpeng-course
      @cwpeng-course  6 лет назад +1

      谢谢呦,对你有帮助我觉得很棒 :)

  • @conypeng3989
    @conypeng3989 2 года назад +2

    老師您好 ,想請教您,我在練習data=json.load(file)的時候,輸入了跟教學相同的程式碼。
    import json
    with open("config.json" , mode="r" ) as file:
    data=json.load(file)
    print(data)
    print("name : " , data["name"])
    print("version:" , data["version"])
    不過卻跑出以下錯誤訊息:
    json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
    想請問是什麼原因呢?謝謝!

    • @cwpeng-course
      @cwpeng-course  2 года назад

      檔案本身格式或是編碼的問題。確認你的 config.json 檔案內容是否為 JSON 格式,每一個字都要正確。然後再確認檔案是否使用 UTF-8 編碼,若是使用 VS Code 可以查看畫面的右下角有個顯示編碼的區塊。

  • @dannyke844
    @dannyke844 3 года назад +7

    老師的笑點很好笑www
    想請教老師如果讀取進來是要"續寫"內容的話
    我是先把檔案內容存進變數,然後在變數後面加我要加的新的內容,再把變數寫回檔案
    是這樣操作嗎?

    • @cwpeng-course
      @cwpeng-course  3 года назад +3

      是這樣嗎 XDDD
      你描述的做法是可以的。也可以在打開檔案的時候使用 mode="a" 就能夠直接把資料串接在後面 ~

    • @dannyke844
      @dannyke844 3 года назад +1

      @@cwpeng-course 原來如此,感謝老師指導

  • @flowerhahaha7192
    @flowerhahaha7192 4 года назад +8

    兩個問題想請教老師:
    1. 為什麼不能直接寫:print(file.read())?
    2. 之前在教for語法的時候,有說in的後面必須是列表,現在這樣使用是否代表儲存的檔案物件"file"本質是一種列表呢?為什麼使用for語法時不需寫成:for data in file.read()?
    謝謝老師。

    • @cwpeng-course
      @cwpeng-course  4 года назад +7

      1. 可以哦,可能是其他程式的搭配沒處理好。
      2.
      這個問題非常的好,其實 for in 的後面不一定要是列表,他是一個更廣泛的概念就做 Iterable Object,但這個概念有點深入,所以我入門教學的時會稍微簡化或省略細節。
      file 物件本身是一個 Iterable Object 所以可以放在 for in 的後面。for data in file.read() 則是把 file.read() 取得的字串放在 for in 的後面,不太一樣的狀況。

    • @flowerhahaha7192
      @flowerhahaha7192 3 года назад +1

      @@cwpeng-course 謝謝老師,剛剛才發現這個問題回覆了XD
      1. 我試了一下還是不行,程式碼如下:
      #寫入檔案
      f = open("file.txt", mode="w", encoding="utf-8")
      f.write("Hello
      Idiot")
      f.close()
      #讀取檔案
      f = open("file.txt", mode="r", encoding="utf-8")
      x = f.read()
      print(f.read())
      f.close()
      執行後一片空白,但如果改成print(x)就沒有任何問題。想問問老師是什麼原因QQ

    • @flowerhahaha7192
      @flowerhahaha7192 3 года назад

      @@cwpeng-course 2. 謝謝老師的說明,這樣對資料型態有比較了解了,估狗了Iterable Object還是看不太懂,但先這樣好了XD

    • @cwpeng-course
      @cwpeng-course  3 года назад +4

      @@flowerhahaha7192 關鍵在於不能 read() 兩次哦,所以要把 x=f.read() 移除掉,後面的 print(f.read()) 就應該可以了。

    • @flowerhahaha7192
      @flowerhahaha7192 3 года назад +1

      @@cwpeng-course 原來如此!謝謝老師!

  • @劉威廉-g8d
    @劉威廉-g8d 3 года назад +2

    with open("open.txt",mode="r+",encoding="utf-8") as file:
    file.write("嗚嗚嗚")
    add=file.read()
    print(add)
    請問老師一下,為何這樣print無法印出 嗚嗚嗚 呢?

    • @cwpeng-course
      @cwpeng-course  3 года назад +1

      要重新打開檔案,再讀取,才能夠取得剛剛寫進去的資料。
      概念上是這樣的,檔案操作有一個游標的概念,當你寫入 "嗚嗚嗚",游標就會移動到文字的最後面,再讀取的時候,會從游標的位置開始讀取,所以是讀不到東西的。重新打開檔案,游標會重新從 0 ,也就是最前面開始運作。

    • @劉威廉-g8d
      @劉威廉-g8d 3 года назад

      @@cwpeng-course 還是沒有ㄟ老師

  • @陳震學
    @陳震學 5 дней назад

    老師您好
    想請問如果我先建一個資料夾"A"給python讀,如果我想在這個資料夾裡面再建一個資料夾"B",然後寫程式在B裡面,那我還是要寫一個主程式在A資料夾嗎?還是有辦法可以直接讀取B資料夾裡面的程式

  • @jcy4173
    @jcy4173 2 года назад +1

    老師您好,關於json想要把value改成中文
    with open("config.json",mode='w',encoding="utf-8")as file:
    data["name"]="中文"
    json.dump(data,file)
    可是輸出後是亂碼,這樣要怎麼解決

    • @cwpeng-course
      @cwpeng-course  2 года назад

      可以確認一下打開檔案的時候,VS Code 的右下角編碼的部份是否選擇使用 UTF-8 編碼。

  • @halrison
    @halrison 3 года назад +3

    要不要用python挑戰電腦軟體設計丙級術科第一站的題目

  • @pat740515
    @pat740515 4 месяца назад

    老師您好,想發問,最後JSON檔案的修改有個小問題:
    import json
    with open("config.json",mode="r", encoding="utf-8") as file:
    data = json.load(file)
    data["name"] = "小明"
    data["version"] = "1.5.3"
    print(data) #驗證
    with open("config.json",mode="w", encoding="utf-8") as file:
    json.dump(data, file)
    最後回去檢驗json檔,發現"name"所對應的參數沒有變小明,而是變成亂碼,結果如下:
    {"name": "\u5c0f\u660e", "version": "1.5.3"}
    想詢問是哪邊有做錯嗎??

  • @snowborder8292
    @snowborder8292 Год назад +1

    老師您好請問我執行這樣import json格式
    import json
    try:
    with open("config.json", mode="r", encoding="utf-8") as j1:
    data = json.loads(j1.read())
    print(data)
    except json.decoder.JSONDecodeError as e:
    print("JSON 解析錯誤:", e)
    卻跑出Expecting value: line 1 column 1 (char 0)這樣的錯誤要怎麼解決
    有確認過config.json內的格式是正確的

    • @cwpeng-course
      @cwpeng-course  Год назад

      這個錯誤本身就是在說讀取到的資料解讀失敗,所以要確認資料格式,或者檔案編碼是否為 UTF-8。或者看看是否用了 UTF-8 (BOM) 這個編碼,會在檔案前面加入看不見的字元。

  • @tzuchingwen9986
    @tzuchingwen9986 4 года назад +13

    老師的課程一步一步, 為什麼要這麼用都解釋得很清楚! 對於學習上幫助很大, 很感謝!

  • @pkl520
    @pkl520 6 лет назад +8

    感謝分享! 都是一些很實用且重要的觀念~!

  • @emmaulala1495
    @emmaulala1495 4 года назад +2

    請問老師:專講JSON的影片是指這個嗎?ruclips.net/video/t7TSFImLa0U/видео.html
    但這個好像是JAVASCRIPT裡的?能否附上網址在描述欄?

    • @cwpeng-course
      @cwpeng-course  4 года назад +1

      是這部沒錯,目前沒有 Python 的哦。

  • @jack0447
    @jack0447 4 года назад +2

    請問彭彭老師 如何解決“encoding"是無效函式的問題? 我使用mac OS 系統 Python 3.8.2
    我上網查到的幾乎都是Python 2才會遇到的問題
    感謝老師無私分享教學

    • @cwpeng-course
      @cwpeng-course  4 года назад +3

      這確實可能是版本的問題,如果使用 Mac 電腦,執行程式時打:python3 檔案名稱
      這樣試試看,寫中文應該就可以了。

  • @sober3198
    @sober3198 Год назад +1

    老師您好,我是剛學習程式的小白,想請問9:03的地方,我照著同步驟操作但是出現FileNotFoundError: [Errno 2] No such file or directory: 'data.txt' 我查到的可能原因是權限問題,請問可以如何解決呢,謝謝老師

    • @cwpeng-course
      @cwpeng-course  Год назад

      錯誤訊息的意思其實就是找不到這個檔案,所以得確認檔案名稱包括副檔名完全正確,以及執行程式是否和教學一樣有先打開專案資料夾,然後在終端機中使用 python 指令執行。

  • @朱朗生
    @朱朗生 2 года назад +1

    請教老師:
    程式如下,為何讀取檔案時,print(data)可以正確執行,但計算總和print(sum)結果卻為0呢?謝謝
    #儲存檔案
    with open("test.txt", mode="w") as file:
    file.write("1
    2
    3
    4
    5")
    #讀取檔案
    with open("test.txt",mode="r") as file:
    data=file.read()
    print(data)
    sum=0
    for n in file:
    sum+=int(n)
    print(sum)

    • @cwpeng-course
      @cwpeng-course  2 года назад

      讀取一次之後,讀寫頭 ( 邏輯上的 ) 就會移動到檔案的最尾部,就不能再讀取第二次。所以必須把前面的
      data=file.read()
      print(data)
      拿掉,後面就可以正常運作。

  • @yangchihwei1974
    @yangchihwei1974 4 года назад +1

    Python 3.8
    IDLE
    Visual Studio Code 1.44.0
    先自己建立2個json檔:
    檔案1: test1.json
    {
    "name":"My Name",
    "version":"1.2.5"
    }
    檔案2: test2.json
    {
    "Name":"彭彭",
    "University":"台灣大學"
    }
    python 主程式檔: file.py
    import json
    with open("test1.json",mode="r") as file:
    data=json.load(file)
    print("name: ",data["name"])
    print("version: ",data["version"])
    當test1.json改成test2.json時,便會出現錯誤:
    Traceback (most recent call last):
    File "C:\Users\***\Downloads\python-training\file.py", line 3, in
    data=json.load(file)
    File "C:\Users\***\AppData\Local\Programs\Python\Python38-32\lib\json\__init__.py", line 293, in load
    return loads(fp.read(),
    UnicodeDecodeError: 'cp950' codec can't decode byte 0xe5 in position 43: illegal multibyte sequence
    修正:
    ~
    with open("test2.json",mode="r",encoding="utf-8") as file:
    data=json.load(file)
    ~
    仍然出現錯誤:
    Traceback (most recent call last):
    File "C:\Users\***\Downloads\python-training\file.py", line 4, in
    print("name: ",data["name"])
    KeyError: 'name'
    再修正:
    import json
    data={"Name":"彭彭","University":"台灣大學"}
    with open("test2.json",mode="w",encoding="utf-8") as file:
    json.dump(data,file)
    with open("test2.json",mode="r",encoding="utf-8") as file:
    data=json.load(file)
    print("Name: ",data["Name"])
    print("University: ",data["University"])
    才會完全正確無誤

    但此時的test2.json檔變為:
    {"Name": "\u5f6d\u5f6d", "University": "\u53f0\u7063\u5927\u5b78"}
    若修正為:(當然前三行建立並寫入檔案的程式碼已被註解掉了)
    {
    "Name": "張忠諆",
    "University": "台灣積體電路"
    }
    跑程式後的結果仍然是原來的test2.json內容,但test2.json裡又被改回上面的內容
    只要json檔裡要帶有繁體中文字,就只能在python主程式裡開啟並創建一個"原創"的json檔,之後才能去修改json檔裡的內容,這樣才不會出現錯誤,若是先自行建立json檔並使用到繁體中文字,就會發生上面的錯誤

  • @cture77651
    @cture77651 4 года назад +8

    感謝彭彭老師的講解!!我都聽不懂我們老師在講什麼>__< 經過您的解釋就通了~~

    • @cwpeng-course
      @cwpeng-course  4 года назад

      很高興對你有幫助哦 :)

    • @PetiteVoice
      @PetiteVoice 2 года назад

      我也是都聽不懂我們老師在講什麼,還好在這邊聽懂了!感謝有彭彭的教學~

  • @bob483
    @bob483 Год назад +1

    老師您好,我照著您的方式做,在24:51的地方出現一些問題,他說FileNotFoundError: [Errno 2] No such file or directory: 'config.json,請問該怎麼解決?🤔🤔

    • @cwpeng-course
      @cwpeng-course  10 месяцев назад

      找不到檔案,確認一下檔名有沒有打錯 ~

  • @張晉-t4j
    @張晉-t4j 4 года назад +1

    以下是我跑請問老師25:56的程式碼結果,我檢查了很久但都沒有頭緒。想請教老師問題點為何?
    runfile('D:/python_training/L12文字檔的讀取與儲存.py', wdir='D:/python_training')
    Traceback (most recent call last):
    File "D:\python_training\L12文字檔的讀取與儲存.py", line 34, in
    data=json.load(file)
    File "C:\Users\Administration\anaconda3\lib\json\__init__.py", line 296, in load
    parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
    File "C:\Users\Administration\anaconda3\lib\json\__init__.py", line 348, in loads
    return _default_decoder.decode(s)
    File "C:\Users\Administration\anaconda3\lib\json\decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
    File "C:\Users\Administration\anaconda3\lib\json\decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
    JSONDecodeError: Expecting value

    • @cwpeng-course
      @cwpeng-course  4 года назад

      文字檔案中的內容,可能有些格式上的錯誤,或是忘了儲存 ~

  • @吳-b6r
    @吳-b6r Месяц назад

    老師您好
    請問一下這個檔案的部分是針對程式裡的檔案
    還是電腦上任何的檔案都可以做操作?
    因為是完全的小白
    問題可能比較不一樣😂

  • @hatiwalker8432
    @hatiwalker8432 5 лет назад +1

    彭彭老師你好,想請教一下
    我用with open('data.txt','r',encoding='ANSI') as file:
    print(file.read())
    就可以讀出全部的資料
    換用with open('data.txt','r',encoding='ANSI') as file:
    for line in file:
    print(file.read())
    就會少讀了第一行
    怎麼會這樣呢?

    • @cwpeng-course
      @cwpeng-course  5 лет назад

      for line in file: 會直接把第一行讀到變數 line 中,是用來一行一行讀取用的。
      你的程式裡面就不會寫 file.read(),這是把剩下的讀出來。
      如果一行一行讀取,會寫成如範例中的程式:
      for line in file:
      print(line)

  • @Konghuanyueli
    @Konghuanyueli 11 месяцев назад +1

    為何我打我照著7:42那時候打file卻沒有變成藍字?

    • @cwpeng-course
      @cwpeng-course  10 месяцев назад

      其實是否上色不是關鍵,但你可以確認看看檔案名稱是否使用 py 當副檔名

  • @tim5758
    @tim5758 11 месяцев назад +1

    28:28 感覺這邊步調有點過快,
    我有在使用JAVA,所以對全局變數、局部變數有點觀念,
    看到程式碼,會覺得data為甚麼可以拿到下面使用

    • @cwpeng-course
      @cwpeng-course  10 месяцев назад

      收到,感謝你的建議哦 :)

  • @Linchenjer
    @Linchenjer 2 года назад +1

    彭彭老師您好
    想請教一下以下的coding問題
    ---------------------------
    file=open("try1.txt", mode="r+",encoding="utf-8")
    file.write("try again")
    print(file.read())
    file.close()
    ----------------------------
    Terminal
    PS D:\Python Folder> python try.py
    ----------------------------
    稍微爬過文了,之前的案例好像是兩次read才造成空白的結果
    想請問老師這個情況是什麼原因呢 ?
    solution
    -----------------------------
    file=open("try1.txt", mode="r+",encoding="utf-8")
    file.write("try again")
    file.close()
    file=open("try1.txt", mode="r+",encoding="utf-8")
    print(file.read())
    file.close()
    ------------------------------
    謝謝老師這麼多高品質的影片 !

    • @cwpeng-course
      @cwpeng-course  2 года назад +1

      write 之後你的檔案讀取頭會在檔案的最尾巴,所以無法再讀取到任何東西。關閉重開,讀取頭才會回到檔案的前面。

    • @Linchenjer
      @Linchenjer 2 года назад +1

      @@cwpeng-course 了解了! 謝謝彭彭老師

  • @jennylian7706
    @jennylian7706 4 года назад +6

    彭彭老師這段錄的粉搞笑喔!
    給您讚一個!

  • @黃國琳
    @黃國琳 6 лет назад +16

    彭彭偷笑的時候,不知為何我也很想笑~

  • @afrankleu1193
    @afrankleu1193 5 лет назад +4

    謝謝彭彭老師的指點啟示 憑著信心把舊有的檔名刪除 然後再把程式碼重打一遍 重新另取檔名 leu.py 果然過關成功
    心裡的喜悅無以名狀 感謝老諄諄教導 一位跟著老師默默學習的老學生敬謝

    • @cwpeng-course
      @cwpeng-course  5 лет назад +2

      恭喜你自己嘗試新的東西成功,這是很重要的一步 :)

    • @呂錦川
      @呂錦川 5 лет назад +2

      感謝老師 您是所有線上教學最棒的老師 感恩!!!!

  • @jonaschen16
    @jonaschen16 10 месяцев назад +1

    老師你好, 請問在讀取json檔時若json檔中有用//做註解, 會導致程式錯誤, 該如何解決? 謝謝!

    • @cwpeng-course
      @cwpeng-course  10 месяцев назад +1

      可以試試看使用更強大的套件 json5,可以用 pip install pyjson5 安裝,使用方法非常類似:
      import json5
      json5.load(file)

  • @shebenson
    @shebenson 3 года назад +1

    請問若要面試外商刷leetcode,演算法、排序建議課程看哪幾章呢

    • @cwpeng-course
      @cwpeng-course  3 года назад

      我們的 Python 課程目前還沒有關於刷題,演算法的部份哦。基礎的話就資料、變數、運算符號、流程控制、函式這些。

  • @さん王-i5f
    @さん王-i5f 4 года назад +1

    16:39分的"with open("data.txt",mode="w",encoding="utf-8") as file:
    file.write("測試中文
    好棒棒")" 為什麼前面為什麼file的前面要空一個tab不然就一直出錯阿而且顯示是f出錯

    • @Ming-ce5fw
      @Ming-ce5fw 4 года назад +1

      你问这个问题,证明你没看 彭彭老师 前面的课程!

    • @cwpeng-course
      @cwpeng-course  4 года назад +1

      感謝 @Ming555 的回應 :)
      前面要空一個 tab 表示它在 with 的區塊之中,Python 是依賴縮排來辨識程式區塊的 ~

  • @我想學英文
    @我想學英文 3 года назад +2

    21:50先去看JSon

  • @LalisaLalisa-cx3sw
    @LalisaLalisa-cx3sw 11 месяцев назад +1

    彭彭老师,麻烦问一下你,这里的json.load是什么意思,之前学到调用的时候似乎点后面应该是这个文件夹里面的定义的函数才对呀?

    • @cwpeng-course
      @cwpeng-course  10 месяцев назад +1

      json 是内建的模组,json.load 可以把一个串流转换成字典列表的结构 ~

  • @bobkyt1244
    @bobkyt1244 3 года назад +1

    老師好:我是一個國中的初學者,目前看老師的影片學習,但今天做的時候出現錯誤訊息,無法達到老師在影片9分鐘時做到的效果,請問該如何解決?錯誤訊息如下
    PS D:\bob\程式設計\作品> & C:/Users/bobkw/AppData/Local/Programs/Python/Python39/python.exe d:/bob/程式設計/作品/第一部分/讀寫檔案.pyexe d:/bob/程式設計/作品/第一部分/讀寫檔案.py
    Traceback (most recent call last):
    File "d:\bob\程式設計\作品\第一部分\讀寫檔案.py", line 1, in
    file=open("data.txt",mode="w")
    FileNotFoundError: [Errno 2] No such file or directory: 'data.txt'
    PS D:\bob\程式設計\作品>

    • @cwpeng-course
      @cwpeng-course  3 года назад

      你的程式可以試試看改成 file=open("./data.txt", mode="w")

    • @bobkyt1244
      @bobkyt1244 3 года назад +1

      @@cwpeng-course 謝謝老師,解決了

  • @蒙娜麗鴨
    @蒙娜麗鴨 3 года назад +3

    11:10 我之前一直不懂中文字的解決方式 謝謝老師的教導

    • @cwpeng-course
      @cwpeng-course  3 года назад

      謝謝你的回饋,有幫助很棒 :)

  • @邱翰杰
    @邱翰杰 4 года назад +1

    自己有看PYTHON書完與14:57所寫的是一樣的,RUN也沒問題,但我想問的是data他是不是區域變數?為甚麼在全域變數PRINT還可以顯示?謝謝

    • @cwpeng-course
      @cwpeng-course  4 года назад +4

      在 with 描述底下的變數,還是全域的哦 ~~~~~

  • @許哲嘉-x6k
    @許哲嘉-x6k 4 года назад +1

    老師請問為什麼我讀資料 data=file.read() 之後寫 sum=0 for x in data:
    sum+=x會error

    • @cwpeng-course
      @cwpeng-course  4 года назад +1

      要看看 error 的訊息或程式,才有辦法判斷哦 ~

  • @Stephen33421
    @Stephen33421 3 года назад +1

    #配合第10堂的function, 製作 fileCopy 功能
    def fileCopy(fSrc, fDest):
    with open(fSrc, mode="r", encoding="utf-8") as fScrObj:
    with open(fDest, mode="w", encoding="utf-8") as fDestObj:
    fDestObj.write(fScrObj.read())
    fileCopy("main.py","data.txt")

  • @unloli
    @unloli 4 года назад +8

    21:54 "怎麼自動給我變大寫XD.....我恨它~該死XDD"
    被戳到笑點XDDD

  • @supermanhoo5828
    @supermanhoo5828 4 года назад +1

    哪里是json的一段的教学视频?请问 彭彭老师,在哪里可以看到?

    • @cwpeng-course
      @cwpeng-course  4 года назад +1

      這裡哦 ruclips.net/video/t7TSFImLa0U/видео.html

  • @chenglin2020
    @chenglin2020 6 лет назад +3

    請問當它每次寫入時都會覆蓋上次寫入的內容嗎? 該怎麼寫才能讓它別覆蓋上一次寫入的內容?

    • @cwpeng-course
      @cwpeng-course  6 лет назад +4

      打開檔案的時候可以用附加模式,例如:
      open("data.txt", mode="a")

    • @denzelh2283
      @denzelh2283 3 года назад

      原來如此 搞好久了 終於找到這邊有解答

  • @patrickliao914
    @patrickliao914 5 лет назад +1

    老師 我有小問題 看了好多次依然無法解決 ! 懇請解答 謝謝
    但我不會把我的照片轉成網址,但所遇問題跟 cheng 同學相仿
    謝謝老師 !

    • @cwpeng-course
      @cwpeng-course  5 лет назад

      不好意思,可能需要比較精確的資訊才有辦法試著幫忙你。

  • @呂錦川
    @呂錦川 5 лет назад +1

    彭彭老師 樓下的afrnk leu 就是呂錦川 只是我不小心用了不同的帳號進入了你的教學課程 對不起!

  • @shaofu8709
    @shaofu8709 4 года назад +1

    老師您好,請問寫入json格式前,是不是一定要先讀取?因為json的資料是字典形式所以不能直接改嗎?

    • @cwpeng-course
      @cwpeng-course  4 года назад +1

      你也可以直接創造一個字典,就寫入。只是這樣就和原本檔案中的資料無關,新資料會直接覆蓋舊的資料。

  • @ednaho5536
    @ednaho5536 6 лет назад +4

    感謝老師無私分享! (・ω・)b

  • @khan_chang
    @khan_chang 4 года назад +1

    想請教一下老師為什麼上面的讀取python檔案是寫file.read 但是到了讀取json檔案要改成.load嗎?
    是因為語法上的不同還是因為功能不同,謝謝老師。

    • @cwpeng-course
      @cwpeng-course  4 года назад +1

      json.load() 其實內部就會幫我們去做 file.read() 的動作,然後再進一步解析 JSON 格式的資料。
      file.read() 就是讀取成字串,不會把去解析 JSON 格式成字典或列表。

    • @khan_chang
      @khan_chang 4 года назад +1

      謝謝老師!

  • @Lees5366
    @Lees5366 6 месяцев назад +1

    19:11 老師是在開車嗎XD

  • @franktsui6782
    @franktsui6782 4 года назад +1

    12:01 時一次在4行前面加#是怎麼按的,因為只聽到一聲,不像是先按CTL+ALT+I再按HOME,可以教一下嗎?,謝謝!

  • @goja234
    @goja234 4 года назад +3

    去看了JSON教學又會被叫去看JS的教學xdd

    • @cwpeng-course
      @cwpeng-course  4 года назад +2

      錄製的時候倒是沒有特別多想,不過這些確實是關聯在一起的東西哦 :)

    • @詹耕銓
      @詹耕銓 4 года назад

      哈哈哈 我也注意到了😂😂

  • @ShouShou7777
    @ShouShou7777 2 года назад

    老師您好,當我的text檔裡有一行超過2個數字以上,有或無用逗號隔開(例: 3,8 或 3 8),就會出現ValueError: invalid literal for int() with base 10: '3,8'。
    請問若行裡有超過2個以上數字,是否也能分別擷取進行運算呢?

    • @cwpeng-course
      @cwpeng-course  2 года назад +1

      讀取到的資料是 "3,8" 直接轉換成整數就會失敗,你會需要先把這個字串切割,可以查詢看看 split 這個方法,切割後分開去做轉換。或者研究一下 csv 這個模組來讀取 csv 格式的檔案。

  • @Jashiwa2012
    @Jashiwa2012 6 лет назад +1

    謝謝彭彭老師,請問能否open write, and close 其它副檔類型,如excel, word或有限制只能處理哪些副檔,感謝老師~~

    • @cwpeng-course
      @cwpeng-course  6 лет назад

      都可以處理嘍。
      只是你必須要先了解想要處理的檔案格式,內部資料是怎麼存放的,才有辦法正確的操作。

  • @cephasp342
    @cephasp342 5 лет назад +1

    彭彭老師您好,關於json導入和讀取的問題。我在file.py內輸出了相同的程序後,執行程序時出現了下列錯誤:
    Traceback (most recent call last):
    File "file.py", line 21, in
    data=json.load(file)
    File "C:\Python\Python37\lib\json\__init__.py", line 296, in load
    parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
    File "C:\Python\Python37\lib\json\__init__.py", line 348, in loads
    return _default_decoder.decode(s)
    File "C:\Python\Python37\lib\json\decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
    File "C:\Python\Python37\lib\json\decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
    json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
    想請教一下這個錯誤該如何解決,謝謝@@

    • @cwpeng-course
      @cwpeng-course  5 лет назад

      他的意思是檔案中的 json 格式不正確。你可能要仔細比對一下讀取的檔案內容是否和我影片中的一模一樣嘍 ~

    • @jackjack-kw2zh
      @jackjack-kw2zh 5 лет назад

      我也是遇到同樣的問題! !
      我反覆看了一下都沒啥問題,但是就是出現這個錯誤一模一樣,
      我的my name是寫小寫開頭 後來改成跟老師一樣是My Name就過了 難道有開頭要大寫的規定嗎??

    • @李晉毅-g9s
      @李晉毅-g9s 5 лет назад

      我也遇到一樣的問題!!想請問您是怎麼解決的呢?

    • @effie559
      @effie559 2 года назад

      我也遇到一樣的問題! 我原本是用單引號 ' ' ,後來改成雙引號 " " 就解決了,但不知道為甚麼,想請問這是json的規定嗎?

  • @lifedead8510
    @lifedead8510 4 года назад

    # 把檔案中的數字資料,一行又一行的讀取出來,並且做計算
    file=open('data.txt', mode='w', encoding='utf-8') # 開啟
    file.write('666
    666')
    file.close()
    sum=0
    file=open('data.txt', mode='r', encoding='utf-8')
    a=file.read()
    for a in file:
    sum+=int(a)
    print(sum)
    程式碼沒有問題跳出來,可是就是沒有印出總和,只有印出sum=0
    想請問彭彭老師這樣有什麼問題存在嗎?單純好奇不用Python實務法,用其他方法做的計算。

    • @cwpeng-course
      @cwpeng-course  4 года назад +2

      倒數第四行的 a=file.read() 是多出來的,會把檔案內容一次讀取完畢,後面的迴圈就讀不到任何東西哦 ~

    • @lifedead8510
      @lifedead8510 4 года назад +1

      @@cwpeng-course 謝謝彭彭老師!!😱

  • @abe00722
    @abe00722 3 года назад

    老師您好,
    我有一段程式碼如下
    with open("data.txt", mode="w", encoding="utf-8") as file:
    file.write("5
    6
    7
    8")
    sum=0
    with open("data.txt", mode="r") as file:
    print (file.read()
    )
    for line in file:
    sum+=int(line)
    print("sum=",sum)
    ==================================================
    這樣得到的結果是這樣
    5
    6
    7
    8
    sum= 0
    sum算出來是0, 不是26
    ==================================================
    我把print(file.read())
    mark起來,
    with open("data.txt", mode="w", encoding="utf-8") as file:
    file.write("5
    6
    7
    8")
    sum=0
    with open("data.txt", mode="r") as file:
    #print(file.read())
    for line in file:
    sum+=int(line)
    print("sum=",sum)
    ==================================================
    這樣就可能正確算出sum為26
    想請問老師為什麼一開始最上面那一段, 想要先print (file.read()), sum卻變成0

    • @Allen_wu7651
      @Allen_wu7651 3 года назад +2

      因為如果你那樣寫會變整篇讀取而不是一行一行

    • @Allen_wu7651
      @Allen_wu7651 3 года назад +2

      你用了for迴圈就不用再打那一行了

    • @cwpeng-course
      @cwpeng-course  2 года назад

      感謝 @Leo Wu 的回應 :)

  • @Letme-p8b
    @Letme-p8b Год назад

    澎澎老師想請問
    寫檔的時候遇到的錯誤請問該如何排除
    想知道為何會這樣嗎
    以下是我的程式碼
    import json
    with open('account.json','w') as file:
    file.write(json.dumps({'google':{'a123':'123'}}))
    def get_password_dic():
    with open('account.json','r',encoding='utf-8') as file:
    return json.loads(file.read())
    def add_password(name,account,password):
    with open('account.json','w',encoding='utf-8') as file:
    password_dic = get_password_dic()
    password_dic[name] = {
    "account":account,
    "password":password
    }
    file.write(json.dumps(password_dic))
    print("歡迎來到密碼管理器~")
    while True:
    mode = input("請輸入你想要(a新增 r讀取 q離開): ")
    if mode == "q":
    break
    elif mode == "a":
    name = input("請輸入你要新增的帳號名稱: ")
    account = input("請輸入帳號: ")
    password = input("請輸入密碼: ")
    add_password(name,account,password)

    • @cwpeng-course
      @cwpeng-course  Год назад

      有錯誤的時候會產生錯誤的訊息,從訊息中找到是哪一行發生錯誤,再進行判斷。建議你把錯誤訊息貼出來,我們比較有機會從旁幫助你。

  • @g8805261
    @g8805261 6 лет назад +2

    請問要怎樣一次把多行前面標示或取消#?

    • @cwpeng-course
      @cwpeng-course  6 лет назад +5

      選取所有行數之後,按 ctrl+/ 就可以嘍 ~

    • @Tom-yn8ow
      @Tom-yn8ow 5 лет назад

      在需要注释的多行前面输入三个''' 在多行结尾处再次输入三个'''

  • @林楷哲-r2i
    @林楷哲-r2i 3 года назад

    我想請問老師,我這一段有打錯嗎?
    因為一直跑不出data.txt
    還是是其他部分的錯誤?感謝彭彭老師!!!
    file=open("data.txt", mode="w", encoding="utf-8")
    file.write("hello file")
    file.close()
    with open("data.txt", mode="w", encoding="utf-8") as file:
    file.write("Hello File
    Second Line")
    sum=0
    with open("data.txt",mode="r", encoding="utf-8")as file:
    for line in file:
    sum=int(line)
    print(sum)
    import json
    with open("config.json",mode="r")as file:
    data=json.load(file)
    print(data)
    data["name"]="new name"
    with open("config.json",mode="w")as file:
    json.dump(data,file)

  • @user-kg7hb3jg6w
    @user-kg7hb3jg6w 4 года назад +1

    這集確實不簡單,我反覆思考了hen 九

    • @cwpeng-course
      @cwpeng-course  4 года назад

      加油加油,希望已經有想通了 ~

  • @呼洽
    @呼洽 5 лет назад

    那請問要怎麼在有中文的情況下 對數字進行加法
    with open("4y數量.txt",mode="w",encoding="utf-8")as file:
    # file.write("默示錄Type-Void:10

    能量碎片:1200")
    默示錄Type-Void:10\能量碎片:1200 默示錄Type-Void:10(+1)跟能量碎片:1200(+300)的數量
    請問彭彭老師語法
    我是想要跳出一個框框 然後打2次數字之後記事本的數量就會增加
    我自學但是都找不到資源qnq

    • @cwpeng-course
      @cwpeng-course  5 лет назад

      逐行讀取資料,再把前面的文字去除,可以用 replace 替換成空字串就會去除,最後轉換成數字後做加法。
      例如:
      讀取到 "默示錄Type-Void:10"
      使用 replace 去除前面的文字,變成 "10"
      使用 int 轉換成數字,變成 10
      接著就可以做加法了 ~

  • @呂亞庭-b2q
    @呂亞庭-b2q 3 года назад

    請教老師按照您的code:該如何解決呢~
    import json
    with open('config.json') as file:
    data=json.load(file)後出現以下
    File "C:\Users\user\anaconda3\lib\json\decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
    JSONDecodeError: Expecting value

    • @cwpeng-course
      @cwpeng-course  3 года назад

      確認一下 config.json 檔案是否存在,是否有先儲存,裡面的格式有沒有寫對 ~

  • @ChloeLin-t8b
    @ChloeLin-t8b Год назад

    老師您好,想請問以下問題
    有看到影片說明不要使用file.read()去計算總和,但仍想釐清以下疑問
    1.為什麼以()read程式碼執行印出結果不會包含空行
    with open("0719-3.txt", mode = "w") as file:
    file.write("99
    100
    101")
    with open("0719-3.txt", mode = "r", encoding="utf-8") as file:
    total = 0
    w = file.read()
    print(w)
    結果印出-->
    99
    100
    101
    且若以下列方式印出卻會印出 ”錯誤訊息“
    with open("0719-3.txt", mode = "r", encoding="utf-8") as file:
    total = 0
    w = file.read()
    total += int(w)
    print(total)
    結果印出-->invalid literal for int() with base 10: '99
    100
    101'
    2.為什麼以for in loop執行會印出 ”兩行空行“ ?
    with open("0719-3.txt", mode = "w") as file:
    file.write("99
    100
    101")
    with open("0719-3.txt", mode = "r", encoding = "utf-8") as file:
    for i in file:
    print(i)
    結果印出->
    99
    100
    101
    3.我理解您說明計算要使用for in 但仍想知道檔案讀取內容的差異和for in loop明明讀出空行卻不會跑出invalid literal for int() with base 10: '99
    100
    101' 之錯誤訊息?
    再麻煩您的說明,感謝!

    • @cwpeng-course
      @cwpeng-course  Год назад

      1. 看起來已經有包含空白行了,就直接顯示出換行的效果。試圖轉換成整數時,因為文字中包含換行符號,所以失敗。
      2. print() 本身會自己多印出一個換行符號。
      3. int("9
      ") 可以被接受,但 int("9
      9") 不行,這只是 int() 這個轉換函式的特性。

  • @李玟遠
    @李玟遠 4 года назад

    想請問老師,我在跑26:08那段程式時跑出了這樣的資訊,請問要怎麼辦?
    runfile('C:/Users/user01/Desktop/遠/python/文字檔案的讀取和儲存.py', wdir='C:/Users/user01/Desktop/遠/python')
    Traceback (most recent call last):
    File "C:\Users\user01\Desktop\遠\python\文字檔案的讀取和儲存.py", line 40, in
    data=json.load(file)
    File "D:\spyder\lib\json\__init__.py", line 296, in load
    parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
    File "D:\spyder\lib\json\__init__.py", line 348, in loads
    return _default_decoder.decode(s)
    File "D:\spyder\lib\json\decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
    File "D:\spyder\lib\json\decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
    JSONDecodeError: Expecting value

    • @cwpeng-course
      @cwpeng-course  4 года назад

      檔案內容本身不符合 JSON 的格式,所以要確認一下要讀取的檔案是否內容都有寫對哦 ~

  • @KY-sl1df
    @KY-sl1df 2 года назад +1

    老師您好,想跟您請教2個問題...
    1. 我想試試使用r+模式寫寫看,所以把程式改成
    import json
    with open("config.json",mode="r+") as file:
    data = json.load(file)
    data["name"] = "New Name"
    json.dump(data,file)
    結果出現下面的錯誤
    Traceback (most recent call last):
    File "C:\Users\Python trainning\file.py", line 5, in
    json.dump(data,file)
    File "C:\Users\Programs\Python\Python310\lib\json\__init__.py", line 180, in dump
    fp.write(chunk)
    ValueError: I/O operation on closed file.
    是不是使用r+模式時需要注意什麼呢?
    2.後來我換成不使用最佳寫法,改成
    import json
    file = open("config.json",mode="r+")
    data = json.load(file)
    data["name"] = "New Name"
    json.dump(data,file)
    file.close()
    但config.txt的結果不是覆寫,而是追加...
    {"name": "Old Name", "version": "1.1.2"}{"name": "New Name", "version": "1.1.2"}
    再麻煩老師了,謝謝~
    P.S 老師的笑聲很可愛www

    • @namie20242001
      @namie20242001 2 года назад +1

      Hi K'Y
      分享我的理解
      因為使用 with open() as file 的關係,離開 with 的區塊 (從縮排判斷)檔案就被關閉了
      所以第五行程式碼的 json.dum(data, file) 找不到預期被開啟 (open)的檔案,所以後來改用一般的開啟檔案方式就沒有這個問題
      如果想要解決這個問題,將第四和第五行都做縮排,應該就可以解決問題了

    • @KY-sl1df
      @KY-sl1df 2 года назад +1

      @@namie20242001 您好,謝謝您的回應~
      我依照您的說明,把第四跟第五行調整為縮排之後,真的就停止報錯了
      只是..config.txt的結果跟前面提到的第二點一樣,不是覆寫,而是追加💦
      (從{"name": "Old Name", "version": "1.1.2"} → {"name": "Old Name", "version": "1.1.2"}{"name": "New Name", "version": "1.1.2"})
      不過我猜這個可能是r+模式的問題,非常感謝您幫忙整理了邏輯的思考方式,謝謝~~o(_ _)o

    • @cwpeng-course
      @cwpeng-course  2 года назад

      你使用 with 敘述,離開 with 區塊後,file 會被關閉,所以要把程式寫在 with 的區塊內:
      import json
      with open("config.json",mode="r+") as file:
      data = json.load(file)
      data["name"] = "New Name"
      json.dump(data,file)

    • @PoChuanChen-z8r
      @PoChuanChen-z8r Год назад

      @@cwpeng-course 老師,我嘗試用你提供的寫法,結果還是追加而不是複寫,這是 r+ 的問題嗎?目前看來如果要複寫,就只能先讀取,然後修改變數後,再使用寫入,這樣比較保險但有點麻煩。老師有更好的做法嗎?謝謝!

  • @yvonnechen1958
    @yvonnechen1958 3 года назад

    老師您好,我在json.load的時候是成功的, 也有建立對的config.json檔案,但在json.dump的時候, config.json檔案變空白, 我重新再輸入跟老師一模一樣的字在config.json檔案, 卻連json.load都跑不出來, 電腦顯示[Errno 2] No such file or directory, 請老師幫我看看哪裡出問題了!以下是我的程式
    import json
    with open("config.json", mode="r") as file:
    result=json.load(file)
    print(result)
    result["name"]="Yvonne"
    with open("config.json",mode="w") as file:
    json.dump(result,file)

    • @cwpeng-course
      @cwpeng-course  3 года назад

      錯誤的訊息是說程式找不到你的檔案,這可能是檔案名稱或資料夾沒處理好的問題,你可以仔細確認檔案名稱是否有多空白,或是不小心放在和程式檔案不同的資料夾中。

  • @masonhong2056
    @masonhong2056 4 года назад

    請問老師 出現一下這段文字是出現什麽問題了?該如何解決呢?
    Traceback (most recent call last):
    File "file.py", line 6, in
    file.wirte("測試中文
    好棒棒")
    AttributeError: '_io.TextIOWrapper' object has no attribute 'wirte'

  • @呂錦川
    @呂錦川 5 лет назад

    謝謝老師很快地回復 但學生不敏 程式碼雖重新打過 但還是不能成功
    檔案名稱 "你的檔案名稱,把 , 包括進去了,應該是 "config.json", mode="r" "
    import json
    with open("config.json" ,mode="r") as file:
    data=json.load(file)
    print(data)
    print("name:",data["name"])
    print("version:",data["version"])
    Traceback (most recent call last):
    File "json12.py", line 1, in
    import json
    File "C:\Users\afran\.vscode\python-traning\json.py", line 4, in
    with open("config.json,",mode="r") as file:
    FileNotFoundError: [Errno 2] No such file or directory: 'config.json,'
    PS C:\Users\afran\.vscode\python-traning>
    請問老師 我該如何寫 才不會出現上述這種情形:
    {我的檔案名稱,把 , 包括進去了,應該是 "config.json", mode="r"
    }
    煩請老師指正了!

    • @cwpeng-course
      @cwpeng-course  5 лет назад

      你的程式基本上沒有問題,不過在你的資料夾中,要像我的影片中一樣,先建立一個文字檔案叫做 config.json,程式才能夠讀取到。

  • @scottliu2440
    @scottliu2440 2 года назад

    謝謝彭彭老師專業的講解,想請問彭彭老師
    with open("config.json",mode="r",encoding="utf-8")as file:
    data=json.load(file)
    print(type(file))
    print(file)
    Terminal跑出
    想請問這裡的file檔案物件type跑出這樣的結果是甚麼意思呢?所以這裡的檔案物件file是指一種資料儲存型態嗎

    • @cwpeng-course
      @cwpeng-course  2 года назад

      你可以想成是某種 Python 內建的物件,名字叫做 TextIOWrapper,要仔細說的話是指文字輸出輸入用的物件,幫助我們讀取和寫入文字。在初學的情況下,把他理解成檔案物件會讓大家比較容易接受 ~

  • @8princessv3
    @8princessv3 3 года назад

    您好,我一直無法讀取到JSON檔案
    [Errno 2] No such file or directory: 'config.json'
    不知道是哪裡有問題??JSON是在同一個文件夾裡面,無法找到檔案~~~ 求解惑 _()_

    • @cwpeng-course
      @cwpeng-course  3 года назад

      如果確定檔名都正確 ( 沒有多空白之類的 ),那就記得要先用 VS Code 打開你的資料夾 ~

    • @8princessv3
      @8princessv3 3 года назад +1

      @@cwpeng-course 謝謝澎澎老師回覆,我試試看。

  • @shi-changho5375
    @shi-changho5375 4 года назад

    請問彭彭老師(我用Mac)
    我最後印出來的資料,都自帶"u",像這樣:
    {u'version': u'1.2.5', u'name': u'My Name'}
    ('name: ', u'My Name')
    ('verson: ', u'1.2.5')
    上網查了一下,似乎是編碼的關係;但滿多網友說,不去掉也不影響邏輯。
    想請問老師意見。

    • @cwpeng-course
      @cwpeng-course  4 года назад +2

      很可能你使用的是 Python 2 的版本問題,如果是 Mac 電腦,確認有安裝新版的 Python 之後,執行時使用:python3 檔案名稱

  • @張惠雯-d8d
    @張惠雯-d8d 4 года назад

    老師您好:
    sum=0
    with open("data.txt",mode="r", encoding="utf-8") as file:
    for ns in file:
    sum+=int(ns)
    print(sum)
    請教 sum+=int(ns) 與 sum==sum+int(ns) 的差別?
    因計算出來不是8是0
    謝謝!

    • @cwpeng-course
      @cwpeng-course  4 года назад

      sum+=int(ns) 和 sum=sum+int(ns) 是一樣的 ~~~
      可以檢查看看你的 data.txt 檔案是否有儲存哦 ~~~

  • @user-kb5rb6qw6l
    @user-kb5rb6qw6l 4 года назад

    老師您好,如果我在python-training的檔案夾裡面創建py檔案,在terminal操作都沒有問題,但是如果把py檔案放到一個python-training底下新的資料夾時,terminal會顯示[Errno 2] No such file or directory。我知道是新建資料夾不在路徑上的問題,但是要如何才能在terminal上操作呢?謝謝老師

    • @cwpeng-course
      @cwpeng-course  4 года назад

      你可以打:python 資料夾名稱/檔案名稱

  • @luemma0933
    @luemma0933 4 года назад

    with open('test.csv', mode='W', encoding="utf-8") as csvfile:
    csvfile.write(test.csv)
    請問老師,我照你的方法直接改成寫入csv檔可以嗎? 有寫入成功,但卻是亂碼??

    • @cwpeng-course
      @cwpeng-course  4 года назад +1

      是否能給我你的完整程式碼呢?只看你目前貼的程式,還無法確認狀況 ~

  • @hin4241
    @hin4241 4 года назад

    with open('test.json',mode='w',encoding='utf-8') as file:
    json.dump('"Players":"[1,2,3]"',file)
    它寫進去的時候自動在每個"前面加上\怎麽辦

    • @cwpeng-course
      @cwpeng-course  4 года назад

      因為你的程式是把一個字串,轉換成 JSON 格式寫出,所以會多出跳脫符號,也就是你說的 \ 這個。
      常見的操作會是把字典和列表結構,轉換成 JSON,例如 json.dump({"Players":[1,2,3]},file)

  • @imbucky1724
    @imbucky1724 2 года назад

    老師
    with open("config.json", mode="w") as file:
    json.dump(data, file)
    裡的dump要怎麼去理解呢?
    因為有點想不通要怎麼去理解它,不好意思

    • @cwpeng-course
      @cwpeng-course  2 года назад

      把字典的結構轉換成對應的 JSON 格式字串,然後儲存到檔案中

  • @austinli80160
    @austinli80160 3 года назад

    為什麼沒有講解 Json.dump和Json.load的功用阿!?

    • @cwpeng-course
      @cwpeng-course  3 года назад

      一個是把資料輸出到檔案中,另一個是載入嘍 ~

  • @仔仔-v8s
    @仔仔-v8s Год назад +1

    這及聲音回來了 不然前兩集超小聲QQ

  • @旭-w1o
    @旭-w1o 3 года назад

    老師您好,請問用spyder會有不能執行的程式碼嗎,因為我在spyder上照老師的打with open=(.......)那邊,結果都無法讀出來,說是錯誤的語法,但我確定是一樣的,想問老師是不是程式的差異問題,謝謝

    • @cwpeng-course
      @cwpeng-course  2 года назад

      語法應該是一樣的,所以要仔細看看錯誤訊息和程式碼,比較能進一步判斷錯誤的源頭是什麼 ~

  • @小幸运-m4y
    @小幸运-m4y 3 года назад +1

    彭彭老师,我希望你做一个,爬去大量图片而且有指定保存路径的教程!!谢谢

    • @cwpeng-course
      @cwpeng-course  3 года назад

      谢谢你的建议哪,我会参考的 :)

  • @我骑小毛驴
    @我骑小毛驴 5 месяцев назад

    首先感谢老师,顺便问下教程的课件,有提供下载么?

  • @manhon9778
    @manhon9778 5 лет назад +1

    寫囘檔案后,變成了同一行,這個能解決嗎?

    • @cwpeng-course
      @cwpeng-course  5 лет назад

      可以在寫入的字串中加入
      代表換行。

  • @胡維恩-r5d
    @胡維恩-r5d 4 года назад

    謝謝彭彭老師的分享,看完影片後我想問一個問題!!
    我嘗試用讀取普通txt檔案的方式去讀取Json的檔案
    最後得到的結果稍微不太一樣:
    txt: {"name": "New Name", "version": "1.2.5"}
    Json: {'name': 'New Name', 'version': '1.2.5'}
    我print之後發現只差了單引號跟雙引號而已,這樣代表讀取出來之後上者是以字串型別輸出,下者是以Json的型別輸出嗎?

    • @cwpeng-course
      @cwpeng-course  4 года назад

      JSON 格式其實也是一種純文字檔案,用普通讀取的方式會印出文字檔案原貌。
      用 JSON 去解讀,則會得到字典和列表型態的資料,印出來的內容是套件處理過的,就不一定是原來的長相,但不影響背後的結構和概念。

  • @fintechchao1345
    @fintechchao1345 3 года назад

    想請問老師甚麼情境下比較有機會用到寫入json 的語法呢 with open("config.json",mode="w") as file: .....為甚麼不直接在json的檔案寫入
    json.dump(data,file)裡面為甚麼沒有輸入file ,json裡面的字典就都不見了lol

    • @cwpeng-course
      @cwpeng-course  3 года назад

      如果你希望檔案中存放的資料是 JSON 的格式,就會用到寫入 JSON 的語法嘍。後面的問題我有點沒看懂,不好意思 @@a

  • @林俊哲-v9t
    @林俊哲-v9t 5 лет назад

    請問如何判斷 文字檔編碼是否為 utf-8 及如何讀取utf-8編碼或非utf-8編碼檔案
    因為 file = open('test.txt','r',encoding='utf-8') 錯誤,因為text.txt非utf-8 編碼
    或是 file = open('test.txt','r') 錯誤,因為test.txt 為utf-8 編碼

    • @cwpeng-course
      @cwpeng-course  5 лет назад

      你用 visual code 打開文字檔案,右下角會顯示檔案本身的編碼。或者任何其他文字編輯器,應該都會在某些地方顯示類似的訊息。
      程式去配合檔案本身的編碼就可以。

  • @danielyoung2649
    @danielyoung2649 2 года назад

    请问老师,config.json 里的内容区分大小写字母吗?为什么json里面是大写的Version, 后来程式中print("version: ", data["version"])会报错呢
    name: My Name #name前后都是一样的
    Traceback (most recent call last):
    File "c:\Python Practice\a.py", line 23, in
    print("version: ", data["version"])
    KeyError: 'version' (因为JSON里是大写的V)

  • @julie850125
    @julie850125 3 года назад +1

    謝謝老師用心教導NumPy使我受益良多,敲碗機器學習課程~^^

    • @cwpeng-course
      @cwpeng-course  3 года назад

      哈哈哈,好哦,謝謝你的回饋和期待 XDDDD

  • @chichun6430
    @chichun6430 5 лет назад

    彭彭老師您好:
    我按照您在影片裡的設定:
    import json
    with open("config.json", mode="r") as file:
    data=json.load(file)
    print(data)
    print("name: ",data["name"])
    print("version: ", data["version"])
    --------------json檔案的設定如下-------------------
    {
    "name":"My name",
    "version":"1.2.5"
    }
    結果run下去的結果如下:
    {u'version': u'1.2.5', u'name': u'My name'}
    ('name: ', u'My name')
    ('version: ', u'1.2.5')
    想請問老師為什麼印出來的時候沒有按照當初寫程式的順序(先印出"name":"My name"在印出"version":"1.2.5")?
    還有為什麼印出來的時候前面會多一個u呢?是我的電腦設定出了什麼問題呢?
    希望老師能解惑,謝謝!!!
    順帶一提:如果我直接用python的IDLE跑這樣的程式就沒什麼問題,蠻好奇到底出了什麼問題~~~

    • @cwpeng-course
      @cwpeng-course  5 лет назад

      字串前面出現 u 代表它被特別標示成 unicode 的字串。
      那個其實沒有問題,只是 python 版本和電腦環境不同,會有不同的顯示方法。

  • @陳康曄
    @陳康曄 10 месяцев назад

    怎麼在寫入之前先用程式碼刪除所有文字最後在寫入

    • @cwpeng-course
      @cwpeng-course  2 месяца назад

      直接使用 mode="w" 就有這個效果了哦 ~

  • @CK-bu5wh
    @CK-bu5wh 3 года назад

    你好 請問彭彭老師, 假如我也跟你一樣建立了一個backup資料夾,然後在資料夾中建立file.py, run下去說找不到file.py 我可否用專案資料夾中的main.py寫sys.path.append來加一條路徑?

    • @cwpeng-course
      @cwpeng-course  3 года назад +2

      這是終端機工作路徑的問題,由於工作路徑會在專案的跟目錄,所以可以直接打檔名。如果多一層資料夾,就要加資料夾名稱,例如:python backup/file.py 這樣

  • @a062693069
    @a062693069 4 года назад +1

    哈哈哈哈感同深受!
    自己也是有寫JavaScript,看到那段也不覺得有問題
    整個豁然開朗的感覺XDD
    謝謝老師的教學~

    • @cwpeng-course
      @cwpeng-course  4 года назад

      哈哈哈哈!
      好哦好哦,不會,謝謝你的回饋 :)

  • @林哲宇-j6w
    @林哲宇-j6w 4 месяца назад +1

    請問多行註解的快捷鍵是甚麼

  • @zxc1593576
    @zxc1593576 5 лет назад

    我照著網路上的一些的東西做,然後我將數據print出來變成下面這樣
    [[0.03 ]
    [0.01 ]
    [0.01414214]
    ...
    [0.05 ]
    [0.0781025 ]
    [0.05 ]]
    這個是序列嗎?
    如果我想把我的上面的數據輸出成CSV檔並取自己想要的名稱要怎麼做?

    • @cwpeng-course
      @cwpeng-course  5 лет назад

      這個是兩個層次的列表。
      先把這個列表結構,利用迴圈轉換成 CSV 的字串格式 ( 換行、與逗號隔開資料 )
      然後再利用文字檔輸出寫到檔案中。

  • @asshand01
    @asshand01 5 лет назад +2

    老師 我有小問題 看了好多次依然無法解決
    我有附圖片在下方
    upload.cc/i1/2019/09/21/fch8Pn.jpg
    謝謝老師>"

    • @cwpeng-course
      @cwpeng-course  5 лет назад +1

      你的 config.json 檔案記得要存檔哦。

    • @asshand01
      @asshand01 5 лет назад +2

      @@cwpeng-course 謝謝老師 以解決問題

  • @我-x8z
    @我-x8z 6 лет назад +1

    請問如果txt檔中的數字有兩列以上 我想要每行加總 要如何寫呢?

    • @cwpeng-course
      @cwpeng-course  6 лет назад +1

      讀取到一行的資料之後,可以使用字串的 split 方法做切割,然後再加起來。
      建議先試試 split 這個功能:
      text="Hello,World"
      words=text.split(",")
      print(words)

  • @周任保
    @周任保 3 года назад +1

    想問一下老師,可以把JSON理解成C 物件導向的概念嗎?

    • @cwpeng-course
      @cwpeng-course  3 года назад +2

      JSON 的本質是 JavaScript 物件的表示法 (JavaScript Object Notation),在不同的語言中會有些不同的說詞,不會特別把他理解成物件導向這麼大的概念。

  • @tsengtony4045
    @tsengtony4045 4 года назад

    謝謝彭彭老師的分享!
    我在用vscode時,terminal跑不出中文字
    ex. 字典{"Apple","蘋果"}跑出來會變成{'Apple': '\xe5\xb0\x8f\xe8\x98\x8b\xe6\x9e\x9c'}
    請問老師這是什麼問題呢?

    • @cwpeng-course
      @cwpeng-course  4 года назад

      確認一下文字檔的編碼,和程式中的編碼處理是否正確。如果都正確的話,就只是 Terminal 工具本身的特性,如果是 windows 電腦或許可以安裝 PowerShell 試試看 ~

  • @TonY-df8hv
    @TonY-df8hv 3 месяца назад

    unexpected character after line continuation character