python进阶-第二季第一章
第八章:文件操作(IO)技術(shù)
116.寫入文件,文件底層關(guān)系
一:簡介
1.一個(gè)完整的程序一般都包括存儲(chǔ)和讀取,如果沒有執(zhí)行實(shí)際的存儲(chǔ)python執(zhí)行完操作數(shù)據(jù)就消失了。實(shí)際開發(fā)中我們經(jīng)常需要從外部存儲(chǔ)介質(zhì)(硬盤,光盤,U盤等)讀取數(shù)據(jù)或者將程序產(chǎn)生的數(shù)據(jù)存儲(chǔ)到文件中實(shí)現(xiàn)“持久化”保存。
2.很多文件系統(tǒng)是將數(shù)據(jù)存儲(chǔ)數(shù)據(jù)庫中,數(shù)據(jù)其實(shí)也是基于文件形式存儲(chǔ)的
3.遠(yuǎn)程服務(wù)器讀取也稱為IO,數(shù)據(jù)庫讀取文件也是IO(IO為輸入和輸出技術(shù))
二.文本文件和二進(jìn)制文件
按照文件數(shù)據(jù)組織形式。我們把文件分為文本文件和二進(jìn)制文件兩大類。
1.文本文件:文本文件是普通的‘字符’文本,python默認(rèn)unicode字符集(兩個(gè)字節(jié)表示一個(gè)字符,最多可以表示:65536個(gè)字節(jié)),可以使用記事本程序打開。但是像word編輯的文檔將不是文本文件。?
2.二進(jìn)制文件:二進(jìn)制的內(nèi)容把數(shù)據(jù)的‘字節(jié)‘’進(jìn)行儲(chǔ)存,無法用記事本打開。必須使用專業(yè)的文件解碼常見的有:MP4,MP3,jpg圖片,doc文檔等。
三.文件操作相關(guān)概述
?
四.創(chuàng)建文件對(duì)象open()
1.open函數(shù)用于創(chuàng)建文件對(duì)象,基本語法:open(文件名【,打開方式】)
?如果只是文件名,代表當(dāng)前目錄下的文件。文件名可以錄入全路徑,例如:D:\a\b.txt?
為了減少“\”的輸入可以使用原始字符串:r“d:\b.txt”?
例如:f=open(r"b.txt","a")? ? 文本文件
f=open(r"b.jpg","ba")? 二進(jìn)制文件
2.打開方式有以下幾種:
?
3.文本文件和二進(jìn)制文件對(duì)象的創(chuàng)建
如果我們沒有增加模式“b”,則默認(rèn)的創(chuàng)建時(shí)文本文件對(duì)象,處理的基本單元是“字符”。
如果是二進(jìn)制模式“b”,則創(chuàng)建的是二進(jìn)制模式,處理的基本單元是“字節(jié)”
4.python代碼寫入硬盤圖解(os:操作系統(tǒng)),處理完數(shù)據(jù)一定要關(guān)閉,否則浪費(fèi)系統(tǒng)資源。
如下代碼:
#coding:utf-8#創(chuàng)建-寫入-關(guān)閉
f= open(r"a.txt","a" )
s = 'aa上啊'
f.write(s)
f.close()
4.write()/writelines()寫入數(shù)據(jù)
write(a)是把字符a寫入到文件中?
writelines(b)是把字符串列表寫入文件中,不添加換行符
例如:
?
?117.編碼知識(shí),中文亂碼問題解決
繪圖軟件:processon
?1 .常用編碼介紹
2.中文亂碼問題
windows操作系統(tǒng)的默認(rèn)編碼是GBK,linux的默認(rèn)操作編碼是UTF-8
如果用的Windows系統(tǒng)默認(rèn)gbk編碼,可以再寫的時(shí)候加入:encoding=“utf-8” 例如:
#coding:utf-8#創(chuàng)建-寫入-關(guān)閉
f= open(r"a.txt","a",encoding='utf-8' )
s = 'aa上啊'
f.write(s)
f.close()
118.關(guān)閉流要點(diǎn)1_try異常管理
1.close()關(guān)閉文件流
由于文件底層是由操作系統(tǒng)控制,所以我們打開文件時(shí)必須顯示調(diào)用close()關(guān)閉文件對(duì)象。當(dāng)調(diào)用close()方法時(shí),首先會(huì)把緩沖區(qū)數(shù)據(jù)寫入文件(也可直接調(diào)用flush()方法)在關(guān)閉文件,釋放文件對(duì)象。
2.為了確保打開文件對(duì)象正常關(guān)閉,一般結(jié)合異常機(jī)制的finally或with關(guān)鍵字實(shí)現(xiàn),無論何種情況都能關(guān)閉打開的文件對(duì)象
3.操作
4.python所有的標(biāo)準(zhǔn)異常類:
| BaseException | 所有異常的基類 |
| SystemExit | 解釋器請(qǐng)求退出 |
| KeyboardInterrupt | 用戶中斷執(zhí)行(通常是輸入^C) |
| Exception | 常規(guī)錯(cuò)誤的基類 |
| StopIteration | 迭代器沒有更多的值 |
| GeneratorExit | 生成器(generator)發(fā)生異常來通知退出 |
| SystemExit | Python 解釋器請(qǐng)求退出 |
| StandardError | 所有的內(nèi)建標(biāo)準(zhǔn)異常的基類 |
| ArithmeticError | 所有數(shù)值計(jì)算錯(cuò)誤的基類 |
| FloatingPointError | 浮點(diǎn)計(jì)算錯(cuò)誤 |
| OverflowError | 數(shù)值運(yùn)算超出最大限制 |
| ZeroDivisionError | 除(或取模)零 (所有數(shù)據(jù)類型) |
| AssertionError | 斷言語句失敗 |
| AttributeError | 對(duì)象沒有這個(gè)屬性 |
| EOFError | 沒有內(nèi)建輸入,到達(dá)EOF 標(biāo)記 |
| EnvironmentError | 操作系統(tǒng)錯(cuò)誤的基類 |
| IOError | 輸入/輸出操作失敗 |
| OSError | 操作系統(tǒng)錯(cuò)誤 |
| WindowsError | 系統(tǒng)調(diào)用失敗 |
| ImportError | 導(dǎo)入模塊/對(duì)象失敗 |
| KeyboardInterrupt | 用戶中斷執(zhí)行(通常是輸入^C) |
| LookupError | 無效數(shù)據(jù)查詢的基類 |
| IndexError | 序列中沒有沒有此索引(index) |
| KeyError | 映射中沒有這個(gè)鍵 |
| MemoryError | 內(nèi)存溢出錯(cuò)誤(對(duì)于Python 解釋器不是致命的) |
| NameError | 未聲明/初始化對(duì)象 (沒有屬性) |
| UnboundLocalError | 訪問未初始化的本地變量 |
| ReferenceError | 弱引用(Weak reference)試圖訪問已經(jīng)垃圾回收了的對(duì)象 |
| RuntimeError | 一般的運(yùn)行時(shí)錯(cuò)誤 |
| NotImplementedError | 尚未實(shí)現(xiàn)的方法 |
| SyntaxError | Python 語法錯(cuò)誤 |
| IndentationError | 縮進(jìn)錯(cuò)誤 |
| TabError | Tab 和空格混用 |
| SystemError | 一般的解釋器系統(tǒng)錯(cuò)誤 |
| TypeError | 對(duì)類型無效的操作 |
| ValueError | 傳入無效的參數(shù) |
| UnicodeError | Unicode 相關(guān)的錯(cuò)誤 |
| UnicodeDecodeError | Unicode 解碼時(shí)的錯(cuò)誤 |
| UnicodeEncodeError | Unicode 編碼時(shí)錯(cuò)誤 |
| UnicodeTranslateError | Unicode 轉(zhuǎn)換時(shí)錯(cuò)誤 |
| Warning | 警告的基類 |
| DeprecationWarning | 關(guān)于被棄用的特征的警告 |
| FutureWarning | 關(guān)于構(gòu)造將來語義會(huì)有改變的警告 |
| OverflowWarning | 舊的關(guān)于自動(dòng)提升為長整型(long)的警告 |
| PendingDeprecationWarning | 關(guān)于特性將會(huì)被廢棄的警告 |
| RuntimeWarning | 可疑的運(yùn)行時(shí)行為(runtime behavior)的警告 |
| SyntaxWarning | 可疑的語法的警告 |
| UserWarning | 用戶代碼生成的警告 |
?
119.關(guān)閉流要點(diǎn)with上下文管理1.with語句(上下文管理)
with關(guān)鍵字,可以自動(dòng)管理上下文資源,不論什么原因跳出with塊,都能確保文件正確關(guān)閉,并且可以在代碼執(zhí)行完畢之后自動(dòng)還原進(jìn)入代碼塊時(shí)的現(xiàn)場(chǎng)。
2.操作:
open () as f 打開一個(gè)文件作為一個(gè)f對(duì)象來引用。
120.文本文件的讀取
一.文件的讀取有以下三個(gè)方法:
1.read([size]):從文件中讀取size個(gè)字符,并作為結(jié)果返回。如果沒有size參數(shù),則讀取整個(gè)文件。讀取到文件末尾,會(huì)返回空字符串。
2.readline():讀取一行內(nèi)容作為返回結(jié)果。讀取到文件末尾,會(huì)返回空字符串。
3.readlines():文本文件中,每一行作為一個(gè)字符串存入列表中,返回該列表
?
轉(zhuǎn)載于:https://www.cnblogs.com/jhnnbb/p/11272811.html
總結(jié)
以上是生活随笔為你收集整理的python进阶-第二季第一章的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 点击小图查看原图
- 下一篇: docker基础维护命令