Submit Search
8. open() 與 io 模組
Jan 27, 2021
1 like
252 views
Justin Lin
使用 open()函式 使用 stdin、stdout、stderr 認識檔案描述器 認識 io 模組
Read more
1 of 40
Download now
Downloaded 14 times
Ad
Recommended
TQC+ 程式語言 Python 09:檔案處理
TQC+ 程式語言 Python 09:檔案處理
neochen2701
此教學內容為財團法人中華民國電腦技能基金會策劃,由逢甲大學 林英志 副教授 編著
流程語法與函式
流程語法與函式
Justin Lin
認識基本流程語法 使用 for Comprehension 認識函式與變數範圍 運用一級函式特性 使用 yield 建立產生器 初探型態提示
4. 流程語法與函式
4. 流程語法與函式
Justin Lin
認識基本流程語法 使用 for Comprehension 認識函式與變數範圍 運用一級函式特性 使用 yield 建立產生器 初探型態提示
7. 例外處理
7. 例外處理
Justin Lin
使用 try、except 處理例外 認識例外繼承架構 認識 raise 使用時機 運用 finally 清除資源 使用 with as 管理資源
從模組到類別
從模組到類別
Justin Lin
深入模組管理 初識物件導向 學習定義類別 定義運算子
資料永續與交換
資料永續與交換
Justin Lin
使用 pickle 與 shelve 認識 DB-API 2.0 使用 sqlite3 模組 處理 CSV、JSON、XML
open() 與 io 模組
open() 與 io 模組
Justin Lin
《Python 3.5 技術手冊》第 8 章投影片
型態與運算子
型態與運算子
Justin Lin
《Python 3.5 技術手冊》第 3 章投影片
Python 2 - 快速簡介
Python 2 - 快速簡介
Cheyin L
對 Python 2 的建置安裝與語法的簡單介紹
《Python 3.5 技術手冊》第二章草稿
《Python 3.5 技術手冊》第二章草稿
Justin Lin
預計 2016 年七月底前完成。
3.型態與運算子
3.型態與運算子
Justin Lin
認識內建型態 學習字串格式化 瞭解變數與運算子 運用切片運算
Y3CDS - Python class 01
Y3CDS - Python class 01
Ting-You Xu
PYTHON CLASS
Python Basic
Python Basic
雨蒼 林
Python 入門
Python 入門
Andy Yao
北科程式設計研究社 - Python 應用入門 (1)
Pycontw2013x
Pycontw2013x
weijr
[3]投影片 futurewad樹莓派研習會 141204
[3]投影片 futurewad樹莓派研習會 141204
CAVEDU Education
We say about the python on the RaspberryPi
2. 從 REPL 到 IDE
2. 從 REPL 到 IDE
Justin Lin
使用 REPL 設定原始碼檔案編碼 基本模組與套件管理 認識 IDE 的使用
Programming python - part 1
Programming python - part 1
Che-Cheng Hsu
10年前做的簡報~需要時翻出來還不錯用~
Python 自然語言處理應用 - 1. 環境配置篇 - 2024 / Environment Configuration
Python 自然語言處理應用 - 1. 環境配置篇 - 2024 / Environment Configuration
Yung-Ting Chen
這份投影片的目的是讓大家配置好能夠撰寫Python的環境。我們使用了Google Colab來線上撰寫Python,大家只要用瀏覽器連上網際網路便能執行。整個操作只要照著投影片的指示,一步一步進行即可。 接下來我會介紹 Jupyter Notebook 的基本概念,包括程式碼區塊 (Code Block) 和執行結果 (Result),以及檔案 (Files) 之間的差異。接下來我一一說明檔案的取得、上傳和下載的操作,以及程式碼的複製與貼上操作。再來講解Python程式碼的基礎知識,以及如何使用AI來協助閱讀程式碼。 最後,我會帶領大家完成專案實作 1-2,也就是分析檔案並儲存結果的練習。我會再次強調實作的步驟,包括開啟 Colab、上傳檔案、貼上程式碼、執行程式,以及查看結果檔案 output.txt。透過這個專案實作,大家可以初步體驗到 Python 在自然語言處理上的應用。
Programming python - part 2
Programming python - part 2
Che-Cheng Hsu
part 2 la!
Python系列3
Python系列3
數真 蔡
知識是可貴的,而您的回饋與收穫會讓這份資料更具價值。 --- 健康照護領域資料分析基礎能力研習 本投影片擷取此次研習之Python 系列講座,若有任何問題或疏誤,請來信告知,謝謝。
從 REPL 到 IDE
從 REPL 到 IDE
Justin Lin
使用 REPL 設定原始碼檔案編碼 基本模組與套件管理 認識 IDE 的使用
Python basic - v01
Python basic - v01
ssuser5e7722
Python basic
流程語法與函式
流程語法與函式
Justin Lin
《Python 3.5 技術手冊》第 4 章投影片
Op 20090411
Op 20090411
guestc98914
Ch7 教學
Ch7 教學
hungchiayang1
Ch7 教學
Python攻略
Python攻略
mudream4869
快速攻略Python
偷偷學習 Python3
偷偷學習 Python3
Chris Wang
之前偷學 Python 時的學習筆記
Ch14 簡介 Spring Boot
Ch14 簡介 Spring Boot
Justin Lin
認識 Spring Boot 認識 Spring Tool Suite 遷移微網誌至 Spring Boot
Ch13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/Security
Justin Lin
區別程式庫與框架 逐步善用 Spring MVC 簡介 Thymeleaf 模版 使用 Spring Security
Ad
More Related Content
Similar to 8. open() 與 io 模組
(20)
Python 2 - 快速簡介
Python 2 - 快速簡介
Cheyin L
對 Python 2 的建置安裝與語法的簡單介紹
《Python 3.5 技術手冊》第二章草稿
《Python 3.5 技術手冊》第二章草稿
Justin Lin
預計 2016 年七月底前完成。
3.型態與運算子
3.型態與運算子
Justin Lin
認識內建型態 學習字串格式化 瞭解變數與運算子 運用切片運算
Y3CDS - Python class 01
Y3CDS - Python class 01
Ting-You Xu
PYTHON CLASS
Python Basic
Python Basic
雨蒼 林
Python 入門
Python 入門
Andy Yao
北科程式設計研究社 - Python 應用入門 (1)
Pycontw2013x
Pycontw2013x
weijr
[3]投影片 futurewad樹莓派研習會 141204
[3]投影片 futurewad樹莓派研習會 141204
CAVEDU Education
We say about the python on the RaspberryPi
2. 從 REPL 到 IDE
2. 從 REPL 到 IDE
Justin Lin
使用 REPL 設定原始碼檔案編碼 基本模組與套件管理 認識 IDE 的使用
Programming python - part 1
Programming python - part 1
Che-Cheng Hsu
10年前做的簡報~需要時翻出來還不錯用~
Python 自然語言處理應用 - 1. 環境配置篇 - 2024 / Environment Configuration
Python 自然語言處理應用 - 1. 環境配置篇 - 2024 / Environment Configuration
Yung-Ting Chen
這份投影片的目的是讓大家配置好能夠撰寫Python的環境。我們使用了Google Colab來線上撰寫Python,大家只要用瀏覽器連上網際網路便能執行。整個操作只要照著投影片的指示,一步一步進行即可。 接下來我會介紹 Jupyter Notebook 的基本概念,包括程式碼區塊 (Code Block) 和執行結果 (Result),以及檔案 (Files) 之間的差異。接下來我一一說明檔案的取得、上傳和下載的操作,以及程式碼的複製與貼上操作。再來講解Python程式碼的基礎知識,以及如何使用AI來協助閱讀程式碼。 最後,我會帶領大家完成專案實作 1-2,也就是分析檔案並儲存結果的練習。我會再次強調實作的步驟,包括開啟 Colab、上傳檔案、貼上程式碼、執行程式,以及查看結果檔案 output.txt。透過這個專案實作,大家可以初步體驗到 Python 在自然語言處理上的應用。
Programming python - part 2
Programming python - part 2
Che-Cheng Hsu
part 2 la!
Python系列3
Python系列3
數真 蔡
知識是可貴的,而您的回饋與收穫會讓這份資料更具價值。 --- 健康照護領域資料分析基礎能力研習 本投影片擷取此次研習之Python 系列講座,若有任何問題或疏誤,請來信告知,謝謝。
從 REPL 到 IDE
從 REPL 到 IDE
Justin Lin
使用 REPL 設定原始碼檔案編碼 基本模組與套件管理 認識 IDE 的使用
Python basic - v01
Python basic - v01
ssuser5e7722
Python basic
流程語法與函式
流程語法與函式
Justin Lin
《Python 3.5 技術手冊》第 4 章投影片
Op 20090411
Op 20090411
guestc98914
Ch7 教學
Ch7 教學
hungchiayang1
Ch7 教學
Python攻略
Python攻略
mudream4869
快速攻略Python
偷偷學習 Python3
偷偷學習 Python3
Chris Wang
之前偷學 Python 時的學習筆記
Python 2 - 快速簡介
Python 2 - 快速簡介
Cheyin L
《Python 3.5 技術手冊》第二章草稿
《Python 3.5 技術手冊》第二章草稿
Justin Lin
3.型態與運算子
3.型態與運算子
Justin Lin
Y3CDS - Python class 01
Y3CDS - Python class 01
Ting-You Xu
Python Basic
Python Basic
雨蒼 林
Python 入門
Python 入門
Andy Yao
Pycontw2013x
Pycontw2013x
weijr
[3]投影片 futurewad樹莓派研習會 141204
[3]投影片 futurewad樹莓派研習會 141204
CAVEDU Education
2. 從 REPL 到 IDE
2. 從 REPL 到 IDE
Justin Lin
Programming python - part 1
Programming python - part 1
Che-Cheng Hsu
Python 自然語言處理應用 - 1. 環境配置篇 - 2024 / Environment Configuration
Python 自然語言處理應用 - 1. 環境配置篇 - 2024 / Environment Configuration
Yung-Ting Chen
Programming python - part 2
Programming python - part 2
Che-Cheng Hsu
Python系列3
Python系列3
數真 蔡
從 REPL 到 IDE
從 REPL 到 IDE
Justin Lin
Python basic - v01
Python basic - v01
ssuser5e7722
流程語法與函式
流程語法與函式
Justin Lin
Op 20090411
Op 20090411
guestc98914
Ch7 教學
Ch7 教學
hungchiayang1
Python攻略
Python攻略
mudream4869
偷偷學習 Python3
偷偷學習 Python3
Chris Wang
More from Justin Lin
(20)
Ch14 簡介 Spring Boot
Ch14 簡介 Spring Boot
Justin Lin
認識 Spring Boot 認識 Spring Tool Suite 遷移微網誌至 Spring Boot
Ch13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/Security
Justin Lin
區別程式庫與框架 逐步善用 Spring MVC 簡介 Thymeleaf 模版 使用 Spring Security
Ch12 Spring 起步走
Ch12 Spring 起步走
Justin Lin
使用 Gradle 結合 Gradle 與 IDE 認識相依注入 使用 Spring 核心
Ch11 簡介 JavaMail
Ch11 簡介 JavaMail
Justin Lin
寄送純文字郵件 寄送 HTML 郵件 寄送附檔郵件
Ch10 Web 容器安全管理
Ch10 Web 容器安全管理
Justin Lin
了解 Java EE 安全概念與名詞 使用容器基本驗證與表單驗 使用 HTTPS 保密資料傳輸
Ch09 整合資料庫
Ch09 整合資料庫
Justin Lin
了解 JDBC 架構 使用基本的 JDBC 透過 JNDI 取得DataSource 在 Web 應用程式整合資料庫
Ch08 自訂標籤
Ch08 自訂標籤
Justin Lin
使用 Tag File 自訂標籤 使用 Simple Tag 自訂標籤 使用 Tag 自訂標籤
Ch07 使用 JSTL
Ch07 使用 JSTL
Justin Lin
了解何謂 JSTL 使用 JSTL 核心標籤庫 使用 JSTL 格式標籤庫 使用 JSTL XML 標籤庫 使用 JSTL 函式標籤庫
Ch06 使用 JSP
Ch06 使用 JSP
Justin Lin
了解 JSP 生命週期 使用 JSP 語法元素 使用 JSP 標準標籤 使用運算式語言(EL) 自訂 EL 函式
Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器
Justin Lin
了解 Servlet 生命週期 使用 ServletConfig 與ServletContext 使用 PushBuilder 各種傾聽器的使用 繼承 HttpFilter 實作過濾器
Ch04 會話管理
Ch04 會話管理
Justin Lin
了解會話管理基本原理 使用 Cookie 類別 使用 HttpSession 會話管理 了解容器會話管理原理
Ch03 請求與回應
Ch03 請求與回應
Justin Lin
取得請求參數與標頭 處理中文字元請求與回應 設定與取得請求範圍屬性 使用轉發、包含、重新導向
Ch02 撰寫與設定 Servlet
Ch02 撰寫與設定 Servlet
Justin Lin
開發環境準備與使用 了解 Web 應用程式架構 Servlet 撰寫與部署設定 了解 URI 模式對應 使用 web-fragement.xml
CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式
Justin Lin
認識 HTTP 基本特性 了解何為 URI 編碼 認識 Web 容器角色 了解 Servlet 與 JSP 的關係 認識 MVC/Model 2
14. 進階主題
14. 進階主題
Justin Lin
運用描述器 實作裝飾器 定義 meta 類別 使用相對匯入 泛型進階
13.並行、平行與非同步
13.並行、平行與非同步
Justin Lin
認識並行、平行與非同步 使用 threading 模組 使用 multiprocessing 模組 使用 concurrent.futures模組 運用 async、await 與 asyncio
12. 除錯、測試與效能
12. 除錯、測試與效能
Justin Lin
使用 pdb 模組除錯 對程式進行單元測試 使用 timeit 評測程式片段 使用 cProfile(profile)察看評測數據
11. 常用內建模組
11. 常用內建模組
Justin Lin
處理日期與時間 認識日誌的使用 運用規則表示式 管理檔案與目錄 URL 處理
10. 資料永續與交換
10. 資料永續與交換
Justin Lin
使用 pickle 與 shelve 認識 DB-API 2.0 使用 sqlite3 模組 處理 CSV、JSON、XML
9. 資料結構
9. 資料結構
Justin Lin
認識 hashable、iterable、orderable 對物件進行排序 認識群集架構 運用 collections 模組 運用 collections.abc 模組
Ch14 簡介 Spring Boot
Ch14 簡介 Spring Boot
Justin Lin
Ch13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/Security
Justin Lin
Ch12 Spring 起步走
Ch12 Spring 起步走
Justin Lin
Ch11 簡介 JavaMail
Ch11 簡介 JavaMail
Justin Lin
Ch10 Web 容器安全管理
Ch10 Web 容器安全管理
Justin Lin
Ch09 整合資料庫
Ch09 整合資料庫
Justin Lin
Ch08 自訂標籤
Ch08 自訂標籤
Justin Lin
Ch07 使用 JSTL
Ch07 使用 JSTL
Justin Lin
Ch06 使用 JSP
Ch06 使用 JSP
Justin Lin
Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器
Justin Lin
Ch04 會話管理
Ch04 會話管理
Justin Lin
Ch03 請求與回應
Ch03 請求與回應
Justin Lin
Ch02 撰寫與設定 Servlet
Ch02 撰寫與設定 Servlet
Justin Lin
CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式
Justin Lin
14. 進階主題
14. 進階主題
Justin Lin
13.並行、平行與非同步
13.並行、平行與非同步
Justin Lin
12. 除錯、測試與效能
12. 除錯、測試與效能
Justin Lin
11. 常用內建模組
11. 常用內建模組
Justin Lin
10. 資料永續與交換
10. 資料永續與交換
Justin Lin
9. 資料結構
9. 資料結構
Justin Lin
Ad
8. open() 與 io 模組
2.
8. open() 與
io 模組 • 學習目標 – 使用 open()函式 – 使用 stdin、stdout、 stderr – 認識檔案描述器 – 認識 io 模組 2
3.
使用 open() 函式 •
在最基本的需求上,只需要使用到它的前 兩個參數:file 與 mode 3
4.
read()、write()、close() 4
5.
read() 方法 • 在未指定引數的情況下,會讀取檔案全部 的內容 在指定整數引數的情況下,會讀取指定的 字元數或位元組數(依開啟模式是文字或 者二進位而定) 5
6.
• 檔案開啟模式與後續進行的操作必須符合, 否則引發 UnsupportedOperation
例外 • 可以使用 readable() 方法測試是否可讀 取,使用 writable() 方法測試可否寫入 6
7.
readline()、readlines()、 writelines() • 對於文字模式來說,預設是讀取到'n'、 'r'或'rn',都可以被判定為一行 • readline()或readlines()讀到的每一 行,換行字元都一律換為'n'。 •
對於二進位模式來說,行的判斷標準預設 是遇到b'n'這個bytes • 文字模式在寫入的情況下, 任何'n'都 會被置換為os.linesep 的值(Windows 就是'rn') 7
8.
8
9.
• 逐行讀取檔案內容 9
10.
• Python 的檔案讀取風格:讀取一個檔案最 好的方式,就是不要去
read! 10
11.
• 在進行檔案讀寫時,tell() 方法可以告知 目前在檔案中的位移值,單位是位元組值, 檔案開頭的位移值是
0 • seek() 方法可以指定跳到哪個位移值 11
12.
• 可以使用 seek()
來實現隨機存取 • 可以執行 flush() 方法,將緩衝內容出清 12
13.
readinto() 13
14.
• buffering 參數用來設置緩衝策略 •
預設的緩衝策略會試著自行決定緩衝大小 (通常會是 4096 或 8192 位元組) • 或者對互動文字檔案採用行緩衝(line buffering) • 如果 buffering 設定為0,表示關閉緩衝 • 設定為大於0 的整數值,表示指定緩衝的位 元組大小 14
15.
• encoding 指定文字模式時的檔案編碼 •
預設採用 locale.getpreferredencoding() 的傳回值作為編碼 • 如果文字檔案採用的編碼不同,讀取時就 有可能會出現亂碼問題 15
16.
• 在正確指定 encoding
為 'UTF-8' 的情 況下,就不會有問題了: 16
17.
• errors 參數可指定發生編碼錯誤時,該如 何進行處理 •
在不設定的情況下,發生編碼錯誤時會引 發 ValueError 的子類別例外 17
18.
• newlines 的指定值還可以是''、'n'、 'r'與'rn' •
如果指定了'',讀取到'n'、'r'或 'rn', 都可以被判定為一行, 而 readline()或readlines()讀到的每一 行,一律保留來源換行字元 • 如果設定為其他'n'、'r'或'rn', 那麼讀取後的換行字元就會是指定的字元 18
19.
• 文字模式在寫入的預設情況下,任何'n' 都會被置換為os.linesep 的值 •
如果newline 設為''就保留原有的換行 字元,如果指定為其他值,就以指定的字 元進行置換 19
20.
stdin、stdout、stderr • 在 sys
模組中有個 stdin 就代表著標準輸 入,而 stdout 就代表著標準輸出 • 行為上就像 open() 函式開啟的文字模式 檔案物件 20
21.
• 對於標準輸出或輸出, 若想二進位模式讀 取或寫入,
可使用sys.stdin.buffer 或sys.stdout.buffer • 行為就像是以open()函式開啟的二進位模 式檔案物件 21
22.
• 可以改變標準輸入或輸出的來源 22
23.
• 將一個自行開啟的檔案物件,指定給 sys.stdout,就可以利用 print()
來寫 出資料至檔案 • 內建的 print() 函式本身,就有一個 file 參數可以達到這樣的需求 23
24.
• 可以使用 >將程式執行時的標準輸出訊息, 導向至指定的檔案,或者使用
>> 附加訊息 • 標準錯誤的輸出不能使用 >或 >> 重新導向 至檔案 24
25.
認識檔案描述器 • open() 函式的
file 參數,除了接受字串 指定檔案的路徑外,還可指定檔案描述器 • 檔案描述器會是個整數值,對應至目前程 式已開啟的檔案 • 標準輸入通常使用檔案描述器 0,標準輸出 是 1,標準錯誤是 2,進一步開啟的檔案則 會是 3、4、5 等數字 25
26.
• 對於檔案物件,可以使用 fileno()
方法 來取得檔案描述器 26
27.
• 如果指定 open()
的第一個參數為0 會如何 呢? 27
28.
• 若能取得一個對應至系統上已開啟的檔案 描述器,就有機會使用 open()
來包裹成 為檔案物件,以利用檔案物件的高階行為 28
29.
• open() 函式的
closed 參數預設值是 True – 這表示若 open()時 file 指定了一個檔案 描述器,在檔案物件呼叫 close()方法而關 閉時,被指定的檔案描述器也會一併關閉 – 當指定為 False 時,就不會關閉被指定的檔 案描述器 29
30.
• open() 還有個
opener 可以用來指定一 個函式,該函式必須有兩個參數 – 第一個參數會傳入 open() 函式被指定的檔 案路徑 – 第二個參數會是 open() 函式依 mode 而計 算出來的 flags 值,函式最後必須傳回一個 檔案描述器 –open() 函式基於該檔案描述器建立檔案物件, 以便進行檔案操作。 30
31.
31
32.
認識 io 模組 •
open() 函式實際上是個工廠函式 • 若想進一步掌握檔案物件的操作,就得認 識 io 模組 32
33.
• 檔案物件大致上分為三個主要類型 – 文字(Text)I/O –
二進位(Binary)I/O – 原始(Raw)I/O 33
34.
34
35.
35
36.
• 原始 I/O
是無緩衝低階操作,少直接使用, 常作為文字 I/O 或二進位 I/O 底層操作 36
37.
• TextIOWrapper 也是個包裹器,可以包 裹
BufferedIOBase,以便將二進位資料 依指定的文字編碼進行轉換 37
38.
• 如果資料的讀取來源或寫入目的地,並不 是個檔案,而想要是記憶體中某個物件, 那麼可以使用 BytesIO
或 StringIO 38
39.
• 通常使用 BytesIO
時,最後會使用 getvalue() 方法來取得寫入的資料 39
40.
• 若想讀寫的是文字資料,可以使用 StringIO 40
Download