SlideShare a Scribd company logo
Submit Search
Upload
open() 與 io 模組
Report
Share
Justin Lin
Technology / Community Evangelist at Free lancer
Follow
•
4 likes
•
1,827 views
1
of
40
open() 與 io 模組
•
4 likes
•
1,827 views
Report
Share
Download Now
Download to read offline
Software
《Python 3.5 技術手冊》第 8 章投影片
Read more
Justin Lin
Technology / Community Evangelist at Free lancer
Follow
Recommended
從 REPL 到 IDE by
從 REPL 到 IDE
Justin Lin
2.3K views
•
27 slides
Python 起步走 by
Python 起步走
Justin Lin
7.2K views
•
26 slides
《Python 3.5 技術手冊》第二章草稿 by
《Python 3.5 技術手冊》第二章草稿
Justin Lin
4.5K views
•
28 slides
1. Python起步走 by
1. Python起步走
Justin Lin
664 views
•
26 slides
Python 起步走 by
Python 起步走
Justin Lin
1.7K views
•
26 slides
型態與運算子 by
型態與運算子
Justin Lin
1.8K views
•
69 slides
More Related Content
What's hot
流程語法與函式 by
流程語法與函式
Justin Lin
510 views
•
71 slides
Python匯出入csv以及繪製圖表初稿 by
Python匯出入csv以及繪製圖表初稿
jiannrong
8.8K views
•
25 slides
7. 例外處理 by
7. 例外處理
Justin Lin
115 views
•
64 slides
Py ladies 0928 by
Py ladies 0928
Chia-Yi Yen
1.3K views
•
51 slides
Python系列3 by
Python系列3
數真 蔡
396 views
•
43 slides
4. 流程語法與函式 by
4. 流程語法與函式
Justin Lin
188 views
•
76 slides
What's hot
(18)
流程語法與函式 by Justin Lin
流程語法與函式
Justin Lin
•
510 views
Python匯出入csv以及繪製圖表初稿 by jiannrong
Python匯出入csv以及繪製圖表初稿
jiannrong
•
8.8K views
7. 例外處理 by Justin Lin
7. 例外處理
Justin Lin
•
115 views
Py ladies 0928 by Chia-Yi Yen
Py ladies 0928
Chia-Yi Yen
•
1.3K views
Python系列3 by 數真 蔡
Python系列3
數真 蔡
•
396 views
4. 流程語法與函式 by Justin Lin
4. 流程語法與函式
Justin Lin
•
188 views
fork理解 by nightelf1984
fork理解
nightelf1984
•
343 views
Python系列4 by 數真 蔡
Python系列4
數真 蔡
•
456 views
流程語法與函式 by Justin Lin
流程語法與函式
Justin Lin
•
2.6K views
函数调用关系工具-2011-孙光福 by Wu Liang
函数调用关系工具-2011-孙光福
Wu Liang
•
709 views
Python系列1 by 數真 蔡
Python系列1
數真 蔡
•
759 views
Coreseek/Sphinx 全文检索实践指南 by HonestQiao
Coreseek/Sphinx 全文检索实践指南
HonestQiao
•
1.1K views
8. open() 與 io 模組 by Justin Lin
8. open() 與 io 模組
Justin Lin
•
245 views
open() 與 io 模組 by Justin Lin
open() 與 io 模組
Justin Lin
•
337 views
简单Pthon教程 by junjun chen
简单Pthon教程
junjun chen
•
508 views
[系列活動] Python 程式語言起步走 by 台灣資料科學年會
[系列活動] Python 程式語言起步走
台灣資料科學年會
•
13.1K views
Python简明教程 by ingong
Python简明教程
ingong
•
1.6K views
並行與平行 by Justin Lin
並行與平行
Justin Lin
•
2.7K views
Viewers also liked
例外處理 by
例外處理
Justin Lin
1.4K views
•
62 slides
從模組到類別 by
從模組到類別
Justin Lin
1.7K views
•
62 slides
資料結構 by
資料結構
Justin Lin
1.8K views
•
62 slides
網站系統安全及資料保護設計認知 by
網站系統安全及資料保護設計認知
Justin Lin
3.8K views
•
97 slides
OpenSCAD Workshop by
OpenSCAD Workshop
Justin Lin
2.1K views
•
56 slides
Python Programming Essentials - M22 - File Operations by
Python Programming Essentials - M22 - File Operations
P3 InfoTech Solutions Pvt. Ltd.
1.5K views
•
26 slides
Viewers also liked
(17)
例外處理 by Justin Lin
例外處理
Justin Lin
•
1.4K views
從模組到類別 by Justin Lin
從模組到類別
Justin Lin
•
1.7K views
資料結構 by Justin Lin
資料結構
Justin Lin
•
1.8K views
網站系統安全及資料保護設計認知 by Justin Lin
網站系統安全及資料保護設計認知
Justin Lin
•
3.8K views
OpenSCAD Workshop by Justin Lin
OpenSCAD Workshop
Justin Lin
•
2.1K views
Python Programming Essentials - M22 - File Operations by P3 InfoTech Solutions Pvt. Ltd.
Python Programming Essentials - M22 - File Operations
P3 InfoTech Solutions Pvt. Ltd.
•
1.5K views
除錯、測試與效能 by Justin Lin
除錯、測試與效能
Justin Lin
•
1.7K views
Python 3 Programming Language by Tahani Al-Manie
Python 3 Programming Language
Tahani Al-Manie
•
11.5K views
Python Programming Essentials - M44 - Overview of Web Development by P3 InfoTech Solutions Pvt. Ltd.
Python Programming Essentials - M44 - Overview of Web Development
P3 InfoTech Solutions Pvt. Ltd.
•
1.8K views
類別的繼承 by Justin Lin
類別的繼承
Justin Lin
•
1.4K views
Python by Shivam Gupta
Python
Shivam Gupta
•
37.1K views
資料永續與交換 by Justin Lin
資料永續與交換
Justin Lin
•
1.8K views
PyCon Taiwan 2013 Tutorial by Justin Lin
PyCon Taiwan 2013 Tutorial
Justin Lin
•
290.9K views
3D 之邏輯與美感交會 - OpenSCAD by Justin Lin
3D 之邏輯與美感交會 - OpenSCAD
Justin Lin
•
1.4K views
常用內建模組 by Justin Lin
常用內建模組
Justin Lin
•
1.4K views
進階主題 by Justin Lin
進階主題
Justin Lin
•
3K views
初學R語言的60分鐘 by Chen-Pan Liao
初學R語言的60分鐘
Chen-Pan Liao
•
139.8K views
Similar to open() 與 io 模組
TQC+ 程式語言 Python 09:檔案處理 by
TQC+ 程式語言 Python 09:檔案處理
neochen2701
1.2K views
•
30 slides
Java SE 7 技術手冊投影片第 10 章 - 輸入輸出 by
Java SE 7 技術手冊投影片第 10 章 - 輸入輸出
Justin Lin
2.2K views
•
48 slides
07 Structure, File.pdf by
07 Structure, File.pdf
JTLai1
14 views
•
33 slides
輸入輸出 by
輸入輸出
Justin Lin
579 views
•
48 slides
Java SE 8 技術手冊第 10 章 - 輸入輸出 by
Java SE 8 技術手冊第 10 章 - 輸入輸出
Justin Lin
2.6K views
•
48 slides
Java_05:檔案輸出輸入機制 by
Java_05:檔案輸出輸入機制
Brad Chao
400 views
•
24 slides
Similar to open() 與 io 模組
(7)
TQC+ 程式語言 Python 09:檔案處理 by neochen2701
TQC+ 程式語言 Python 09:檔案處理
neochen2701
•
1.2K views
Java SE 7 技術手冊投影片第 10 章 - 輸入輸出 by Justin Lin
Java SE 7 技術手冊投影片第 10 章 - 輸入輸出
Justin Lin
•
2.2K views
07 Structure, File.pdf by JTLai1
07 Structure, File.pdf
JTLai1
•
14 views
輸入輸出 by Justin Lin
輸入輸出
Justin Lin
•
579 views
Java SE 8 技術手冊第 10 章 - 輸入輸出 by Justin Lin
Java SE 8 技術手冊第 10 章 - 輸入輸出
Justin Lin
•
2.6K views
Java_05:檔案輸出輸入機制 by Brad Chao
Java_05:檔案輸出輸入機制
Brad Chao
•
400 views
Learn python 2 - Real World Case by Chia-Hao Tsai
Learn python 2 - Real World Case
Chia-Hao Tsai
•
465 views
More from Justin Lin
Ch14 簡介 Spring Boot by
Ch14 簡介 Spring Boot
Justin Lin
872 views
•
22 slides
Ch13 整合 Spring MVC/Security by
Ch13 整合 Spring MVC/Security
Justin Lin
280 views
•
58 slides
Ch12 Spring 起步走 by
Ch12 Spring 起步走
Justin Lin
274 views
•
31 slides
Ch11 簡介 JavaMail by
Ch11 簡介 JavaMail
Justin Lin
157 views
•
8 slides
Ch10 Web 容器安全管理 by
Ch10 Web 容器安全管理
Justin Lin
153 views
•
30 slides
Ch09 整合資料庫 by
Ch09 整合資料庫
Justin Lin
233 views
•
92 slides
More from Justin Lin
(20)
Ch14 簡介 Spring Boot by Justin Lin
Ch14 簡介 Spring Boot
Justin Lin
•
872 views
Ch13 整合 Spring MVC/Security by Justin Lin
Ch13 整合 Spring MVC/Security
Justin Lin
•
280 views
Ch12 Spring 起步走 by Justin Lin
Ch12 Spring 起步走
Justin Lin
•
274 views
Ch11 簡介 JavaMail by Justin Lin
Ch11 簡介 JavaMail
Justin Lin
•
157 views
Ch10 Web 容器安全管理 by Justin Lin
Ch10 Web 容器安全管理
Justin Lin
•
153 views
Ch09 整合資料庫 by Justin Lin
Ch09 整合資料庫
Justin Lin
•
233 views
Ch08 自訂標籤 by Justin Lin
Ch08 自訂標籤
Justin Lin
•
133 views
Ch07 使用 JSTL by Justin Lin
Ch07 使用 JSTL
Justin Lin
•
161 views
Ch06 使用 JSP by Justin Lin
Ch06 使用 JSP
Justin Lin
•
250 views
Ch05 Servlet 進階 API、過濾器與傾聽器 by Justin Lin
Ch05 Servlet 進階 API、過濾器與傾聽器
Justin Lin
•
204 views
Ch04 會話管理 by Justin Lin
Ch04 會話管理
Justin Lin
•
238 views
Ch03 請求與回應 by Justin Lin
Ch03 請求與回應
Justin Lin
•
236 views
Ch02 撰寫與設定 Servlet by Justin Lin
Ch02 撰寫與設定 Servlet
Justin Lin
•
352 views
CH1. 簡介 Web 應用程式 by Justin Lin
CH1. 簡介 Web 應用程式
Justin Lin
•
1.2K views
14. 進階主題 by Justin Lin
14. 進階主題
Justin Lin
•
406 views
13.並行、平行與非同步 by Justin Lin
13.並行、平行與非同步
Justin Lin
•
238 views
12. 除錯、測試與效能 by Justin Lin
12. 除錯、測試與效能
Justin Lin
•
153 views
11. 常用內建模組 by Justin Lin
11. 常用內建模組
Justin Lin
•
149 views
10. 資料永續與交換 by Justin Lin
10. 資料永續與交換
Justin Lin
•
156 views
9. 資料結構 by Justin Lin
9. 資料結構
Justin Lin
•
292 views
open() 與 io 模組
2.
8. open() 與
io 模組 • 學習目標 – 使用 open()函式 – 使用 stdin、stdout、 stderr – 認識檔案描述器 – 認識 io 模組
3.
使用 open() 函式 •
在最基本的需求上,只需要使用到它的前 兩個參數:file 與 mode
4.
read()、write()、close()
5.
read() 方法 • 在未指定引數的情況下,會讀取檔案全部 的內容 在指定整數引數的情況下,會讀取指定的 字元數或位元組數(依開啟模式是文字或 者二進位而定)
6.
• 檔案開啟模式與後續進行的操作必須符合, 否則引發 UnsupportedOperation
例外 • 可以使用 readable() 方法測試是否可讀 取,使用 writable() 方法測試可否寫入
7.
readline()、readlines()、 writelines() • 對於文字模式來說,預設是讀取到'n'、 'r'或'rn',都可以被判定為一行 • readline()或readlines()讀到的每一 行,換行字元都一律換為'n'。 •
對於二進位模式來說,行的判斷標準預設 是遇到b'n'這個bytes • 文字模式在寫入的情況下, 任何'n'都 會被置換為os.linesep 的值(Windows 就是'rn')
9.
• 逐行讀取檔案內容
10.
• Python 的檔案讀取風格:讀取一個檔案最 好的方式,就是不要去
read!
11.
• 在進行檔案讀寫時,tell() 方法可以告知 目前在檔案中的位移值,單位是位元組值, 檔案開頭的位移值是
0 • seek() 方法可以指定跳到哪個位移值
12.
• 可以使用 seek()
來實現隨機存取 • 可以執行 flush() 方法,將緩衝內容出清
13.
readinto()
14.
• buffering 參數用來設置緩衝策略 •
預設的緩衝策略會試著自行決定緩衝大小 (通常會是 4096 或 8192 位元組) • 或者對互動文字檔案採用行緩衝(line buffering) • 如果 buffering 設定為0,表示關閉緩衝 • 設定為大於0 的整數值,表示指定緩衝的位 元組大小
15.
• encoding 指定文字模式時的檔案編碼 •
預設採用 locale.getpreferredencoding() 的傳回值作為編碼 • 如果文字檔案採用的編碼不同,讀取時就 有可能會出現亂碼問題
16.
• 在正確指定 encoding
為 'UTF-8' 的情 況下,就不會有問題了:
17.
• errors 參數可指定發生編碼錯誤時,該如 何進行處理 •
在不設定的情況下,發生編碼錯誤時會引 發 ValueError 的子類別例外
18.
• newlines 的指定值還可以是''、'n'、 'r'與'rn' •
如果指定了'',讀取到'n'、'r'或 'rn', 都可以被判定為一行, 而 readline()或readlines()讀到的每一 行,一律保留來源換行字元 • 如果設定為其他'n'、'r'或'rn', 那麼讀取後的換行字元就會是指定的字元
19.
• 文字模式在寫入的預設情況下,任何'n' 都會被置換為os.linesep 的值 •
如果newline 設為''就保留原有的換行 字元,如果指定為其他值,就以指定的字 元進行置換
20.
stdin、stdout、stderr • 在 sys
模組中有個 stdin 就代表著標準輸 入,而 stdout 就代表著標準輸出 • 行為上就像 open() 函式開啟的文字模式 檔案物件
21.
• 對於標準輸出或輸出, 若想二進位模式讀 取或寫入,
可使用sys.stdin.buffer 或sys.stdout.buffer • 行為就像是以open()函式開啟的二進位模 式檔案物件
22.
• 可以改變標準輸入或輸出的來源
23.
• 將一個自行開啟的檔案物件,指定給 sys.stdout,就可以利用 print()
來寫 出資料至檔案 • 內建的 print() 函式本身,就有一個 file 參數可以達到這樣的需求
24.
• 可以使用 >將程式執行時的標準輸出訊息, 導向至指定的檔案,或者使用
>> 附加訊息 • 標準錯誤的輸出不能使用 >或 >> 重新導向 至檔案
25.
認識檔案描述器 • open() 函式的
file 參數,除了接受字串 指定檔案的路徑外,還可指定檔案描述器 • 檔案描述器會是個整數值,對應至目前程 式已開啟的檔案 • 標準輸入通常使用檔案描述器 0,標準輸出 是 1,標準錯誤是 2,進一步開啟的檔案則 會是 3、4、5 等數字
26.
• 對於檔案物件,可以使用 fileno()
方法 來取得檔案描述器
27.
• 如果指定 open()
的第一個參數為0 會如何 呢?
28.
• 若能取得一個對應至系統上已開啟的檔案 描述器,就有機會使用 open()
來包裹成 為檔案物件,以利用檔案物件的高階行為
29.
• open() 函式的
closed 參數預設值是 True – 這表示若 open()時 file 指定了一個檔案 描述器,在檔案物件呼叫 close()方法而關 閉時,被指定的檔案描述器也會一併關閉 – 當指定為 False 時,就不會關閉被指定的檔 案描述器
30.
• open() 還有個
opener 可以用來指定一 個函式,該函式必須有兩個參數 – 第一個參數會傳入 open() 函式被指定的檔 案路徑 – 第二個參數會是 open() 函式依 mode 而計 算出來的 flags 值,函式最後必須傳回一個 檔案描述器 –open() 函式基於該檔案描述器建立檔案物件, 以便進行檔案操作。
32.
認識 io 模組 •
open() 函式實際上是個工廠函式 • 若想進一步掌握檔案物件的操作,就得認 識 io 模組
33.
• 檔案物件大致上分為三個主要類型 – 文字(Text)I/O –
二進位(Binary)I/O – 原始(Raw)I/O
36.
• 原始 I/O
是無緩衝低階操作,少直接使用, 常作為文字 I/O 或二進位 I/O 底層操作
37.
• TextIOWrapper 也是個包裹器,可以包 裹
BufferedIOBase,以便將二進位資料 依指定的文字編碼進行轉換
38.
• 如果資料的讀取來源或寫入目的地,並不 是個檔案,而想要是記憶體中某個物件, 那麼可以使用 BytesIO
或 StringIO
39.
• 通常使用 BytesIO
時,最後會使用 getvalue() 方法來取得寫入的資料
40.
• 若想讀寫的是文字資料,可以使用 StringIO