檔案資料存取

2019/10/03 謝碧景(c)編製更新

學習目標

檔案資料儲存與應用大綱

一、 open() 函數開啟檔案

(一)語法

open(檔案名稱[,模式][,編碼])

    • 上述參數中『檔案名稱』必填,其他參數可省略,預設模式為讀取,預設編碼視作業系統而訂。

    • 模式參數:

1.建立物件open 函數會建立一個物件,該物件可處理檔案,待讀取或編輯作業後,會以 close 方法關閉檔案。如下:

f=open('file1.txt','w')

...

f.close()

2.ANSI 編碼:繁體中文Windows 系統,預設編碼為cp950,即記事本儲存為 ANSI 編碼

範例1:開啟 file1.txt 檔案為寫入模式,並將資料寫入檔案中。(檔名:filewrite-1.py)

*註:開啟 file1.txt 檔案:中文 Windows系統預設編碼為 ANSI (以記事本開啟)

3.UTF-8 編碼:因國際間通行編碼及Linux系統預設皆為 UTF-8 編碼,故建議指定 UTF-8 編碼。如下:

  • 開啟 file1.txt 檔案:

4.讀取檔案:讀取 file1.txt 檔案,並顯示資料內容。

    • 例1-3:讀取檔案。(檔名:fileread_1-3.py)

5.with 敘述with 結束後會自動關閉開啟的檔案,※注意:with 敘述內的程式區塊必須縮排

(二)常用處理檔案內容的方法

6.read([size]):讀取指定長度的字元,若未指定長度則讀取所有字元。

  • 例1-5:read([size]) 讀取file1.txt 檔案的前4個字元。(檔名:fileread_1-5.py)

7.readlines():讀取目前文字指標所在行中size長度的文字內容,若省略參數則讀取一整列,含"\n"字符。

    • 例1-6:readlines() 讀取file1.txt 檔案的所有文件內容。(檔名:filerreadlines_1-6.py)

*註1:BOM為文件前端代碼,在中文Windows 系統中,以記事本將檔案存為 UTF-8 時會自動產生,佔1個字元,故讀取有BOM的文件檔,可加上『encoding='UTF-8-sig'』,將BOM去除。【參閱:BOM-維基百科】。

*註2:亦可利用 文件編輯器 NotePad++,如下圖,選擇『編碼→UTF-8碼』,去除BOM。

二、 csv 資料的儲存與讀取

(一)寫入csv 檔案

  1. 匯入 csv模組,即可存取『.csv』檔案。

  2. 利用 csv 的 writer 方法,可建立一個寫入 csv 檔案的物件,再利用 writerow 即可寫入一個串列資料。

◆範例2:寫入『file2.csv』檔案。.(檔名:csvwrite.py)

執行結果:

*註:file2.csv 檔案以逗號『,』為分隔字元儲存,newline=''可讓資料中的換行字元正確分解。

(二)讀取 csv 檔案

  1. 可將csv檔案中資料,以串列或字典方式讀取。

  2. 利用 csv 的 reader 方法,讀取csv檔案內容。

  • 例2-2:讀取『file2.csv』 檔案。.

執行結果:

三、 Excel 資料儲存與讀取

(一) Excel 資料儲存

1.匯入 openpyxl 模組,即可存取Excel 文件格式。參閱:openpyxl 官網

import openpyxl

2.利用 Workbook 方法建立一個新的工作簿。

workbook=openpyxl.Workbook()

3.取得工作簿的第1個工作表,設定 sheet 工作表之儲存格內容,或以 append 方法加入串列資料。最後以工作簿的 save 方法存檔。

sheet = workbook.worksheets[0]

sheet['A1'] = '儲存格內容' #設定A1儲存格內容

# 例

listtitle=["姓名","號碼"]

sheet.append(listtitle)

# 存檔

workbook.save('檔名.xlsx')

◆範例3:將資料儲存到『file3.xlsx』檔。(檔名:xlsx_write.py)

(二) Excel 資料讀取

    • 匯入 openpyxl 模組後,利用 load_workbook 方法建立讀取 Excel 檔案。(檔名:xlsx_read.py)

    • 例3-2:讀取『file3.xlsx』 檔案,並修改A3儲存格資料為 Joe,並存檔。.

*註:

5 #取得指定儲存格內容

6 以 max_row、max_column 屬性可取得總列數(3)、總行數(2)。

8-11 # cell方法可讀取儲存格,value屬性顯示儲存格內容。

12-13 修改A3儲存格內容後存檔。

*參閱: 自動化操作excel(openpyxl)。摘自:GrandmaCan

四、 Google 試算表儲存與讀取

(一)操作流程

    • 使用 Python 將資料儲存到 Google試算表,需先到 Google Developers Console 建立專案。

    • 啟用 Google Sheet API,並建立『服務帳戶』和『服務帳戶金鑰』。

    • 再於 Google試算表設定權限即可。

(二)操作步驟

1.Google Developers Console 設定:建立專案 https://console.developers.google.com

    • 步驟1:請於【MyFusionTables】按下拉選單→開啟【選取專案→新增專案】。

  • 步驟2:輸入【專案名稱→建立】。

2.啟用 Google Sheet API,並建立『服務帳戶』和『服務帳戶金鑰』

    • 步驟3:按下【啟用API和服務】再於搜尋欄位輸入『Google Sheet』點選搜尋到的Google Sheet API,開啟Google Sheet API 視窗,按下【啟用】。

    • 步驟4:在【憑證】頁面按下建立憑證 \ 服務帳戶:新增服務帳戶,角色→角色管理員,金鑰類別:JSON→建立。

*註:待服務帳戶完成後會建立 json 金鑰檔並下載本機,該金鑰檔及服務帳戶名稱會在Python連線雲端硬碟Google試算表中使用(請保存 json 金鑰檔)。

3.Google試算表設定權限

    • 步驟5:請在自己的雲端硬碟中建立Google 試算表,並按下【共用】,使用者輸入Google Developers Console 剛建立的帳戶名稱(即電子郵件,權限設定【可編輯】,後按下傳送。

4.pip 安裝相關模組

    • 請至Anaconda Prompt 安裝gspread 及oauth2client 模組。

pip install gspread oauth2client

5.取得Google資料表的id

6.以Python程式連結 Google 試算表

範例4:(檔名:LinkGoogleSheet.py)

執行結果:(以Spyder 執行,並將 LinkGoogleSheet.py 及 json 金鑰檔,儲存在同一資料夾後,再執行本程式。)