python基礎(chǔ)之文件操作和異常處理
一、文件和異常
1.1從文件中讀取數(shù)據(jù)
讀取整個(gè)文件
讀取文件先要?jiǎng)?chuàng)建一個(gè)文件,在程序的同一目錄下。
greet.txt
“Hello World!
Hello World!
Hello World!
Hello World!”
with open('greet.txt') as file_object: contents=file_object.read() print(contents)
如果txt文件中有中文,輸出出現(xiàn)亂碼時(shí),可以with open(‘greet.txt',encoding=‘UTF-8') as file_object:。
1.2open()
要以任何方式使用文件時(shí),都必須先打開(kāi)文件,才能訪問(wèn)。函數(shù)open()接受一個(gè)參數(shù),打開(kāi)文件的名稱(chēng)。在這里open(‘greet.txt')返回的是一個(gè)表示文件greet.txt的對(duì)象,然后將該對(duì)象賦給file_object供以后使用。
1.3關(guān)鍵字with
關(guān)鍵字with在不再需要訪問(wèn)文件后將其關(guān)閉。也可以調(diào)用open()和close()來(lái)打開(kāi)文件。但是不推薦。
1.4read()
方法read()讀取文件的全部?jī)?nèi)容,并將其作為一個(gè)長(zhǎng)長(zhǎng)的字符串賦給變量contents。
二、逐行讀取
with open('greet.txt',encoding='UTF-8') as file_object: for line in file_object: print(line)
會(huì)發(fā)現(xiàn)多輸出空白行,文件末尾會(huì)有一個(gè)換行符,而print會(huì)換行,所以就多了,可以使用rstrip()。
with open('greet.txt',encoding='UTF-8') as file_object: for line in file_object: print(line.rstrip())
三、創(chuàng)建一個(gè)包含文件各行內(nèi)容的列表
with open('greet.txt',encoding='UTF-8') as file_object: lines=file_object.readlines() for line in lines: print(line.rstrip())
3.1readlines()
readlines()從文件讀取每一行,并將其存在一個(gè)列表中。
四、查找字符串中是否含有特定的字符串
greet_str='' with open('greet.txt',encoding='UTF-8') as file_object: lines=file_object.readlines() for line in lines: greet_str+=line input_str=input('輸入你想查找的字符串') if input_str in greet_str: print('有') else : print('無(wú)')
4.1對(duì)字符串進(jìn)行修改
message='Hello World!' print(message.replace('World','China'))
五、寫(xiě)入文件
5.1寫(xiě)入空文件
with open('greet.txt','w',encoding='UTF-8') as file_object: file_object.write('我愛(ài)編程')
w'告訴Python要以寫(xiě)入模式打開(kāi)這個(gè)文件。打開(kāi)文件時(shí)可以指定模式:讀取模式'r‘,寫(xiě)入模式'w',附加模式‘a(chǎn)'或讀寫(xiě)模式'r+‘。如果省略了模式實(shí)參,則默認(rèn)只讀模式打開(kāi)文件。
使用寫(xiě)入模式時(shí)要小心,因?yàn)闀?huì)把文件的內(nèi)容清空。
5.2寫(xiě)入多行
函數(shù)write()不會(huì)在文本末尾加換行符所以要我們自己添加。
5.3附加到文件
如果要在文件末尾附加內(nèi)容,可以打開(kāi)附加模式,如果指定文件不存在,Python將自動(dòng)創(chuàng)建一個(gè)空文件。
先greet.txt
with open('greet.txt','a',encoding='UTF-8') as file_object: file_object.write('我愛(ài)編程\n')
后greet.txt
六、異常
Python使用稱(chēng)為異常的特殊對(duì)象來(lái)管理程序執(zhí)行期間發(fā)生的錯(cuò)誤。
異常是使用try-except代碼塊進(jìn)行處理的。
6.1處理ZeroDivisionError異常
try: print(4/0) except ZeroDivisionError: print('不能數(shù)以0')
如果代碼塊try-except后面還有代碼將接著運(yùn)行。
try: print(4/0) except ZeroDivisionError: print('不能數(shù)以0') print('--==')
6.2處理FileNotFoundError異常
使用文件時(shí)如果找不到文件,可以使用try-except代碼塊。
分析文本 split()
split()能根據(jù)一個(gè)字符串創(chuàng)建一個(gè)列表,它以空格為分隔符將字符串拆成多個(gè)部分。
str='你好 世界' print(str.split())
6.3靜默失敗
當(dāng)發(fā)生異常時(shí)我們也可以什么都不做。
try: print(4/0) except ZeroDivisionError: pass
pass也可以提示我們什么都沒(méi)有做。
七、存儲(chǔ)數(shù)據(jù)
模塊json可以將簡(jiǎn)單的數(shù)據(jù)結(jié)構(gòu)儲(chǔ)存在文件當(dāng)中。json
不僅僅能在python中分享數(shù)據(jù),也可以給其他編程語(yǔ)言分享。
7.1使用json.dump()和json.load()
import json number=list(range(10)) with open('number.json','w') as file: json.dump(number,file)
json.dump()接受兩個(gè)實(shí)參:要 儲(chǔ)存的數(shù)據(jù)和儲(chǔ)存數(shù)據(jù)的文件對(duì)象。文件通常使用文件擴(kuò)展名.json來(lái)支出文件儲(chǔ)存的數(shù)據(jù)為JSON格式。
import json with open('number.json') as file: number=json.load(file) print(number)
7.2重構(gòu)
將代碼改進(jìn)的過(guò)程稱(chēng)為重構(gòu)。重構(gòu)使代碼更加清晰,更易于理解,更容易擴(kuò)容。
到此這篇關(guān)于python基礎(chǔ)之文件和異常處理的文章就介紹到這了,更多相關(guān)python文件和異常內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python實(shí)現(xiàn)寫(xiě)數(shù)字文件名的遞增保存文件方法
今天小編就為大家分享一篇python實(shí)現(xiàn)寫(xiě)數(shù)字文件名的遞增保存文件方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-10-10淺談python中的getattr函數(shù) hasattr函數(shù)
下面小編就為大家?guī)?lái)一篇淺談python中的getattr函數(shù) hasattr函數(shù)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-06-06django 簡(jiǎn)單實(shí)現(xiàn)登錄驗(yàn)證給你
這篇文章主要介紹了django 簡(jiǎn)單實(shí)現(xiàn)登錄驗(yàn)證給你,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11Python打工人必備之windows倒計(jì)時(shí)鎖屏功能的實(shí)現(xiàn)
每個(gè)人的電腦里都會(huì)有不想讓別人知道的隱私,或者是上班時(shí)間偷偷摸魚(yú)怕被發(fā)現(xiàn)的小秘密。那怎么辦?就干脆把隱私鎖起來(lái)!從源頭上杜絕被他人偷窺自己的隱私。本文就來(lái)用Python實(shí)現(xiàn)一個(gè)windows倒計(jì)時(shí)鎖屏功能,需要的可以參考一下2023-04-04Python?np.where()的詳解以及代碼應(yīng)用
numpy里有一個(gè)非常神奇的函數(shù)叫做np.where()函數(shù),下面這篇文章主要給大家介紹了關(guān)于Python?np.where()的詳解以及代碼應(yīng)用的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08python基于pexpect庫(kù)自動(dòng)獲取日志信息
這篇文章主要介紹了python基于pexpect庫(kù)自動(dòng)獲取日志信息的方法,幫助大家更好的利用python高效辦公,感興趣的朋友可以了解下2021-02-02python中scipy.stats產(chǎn)生隨機(jī)數(shù)實(shí)例講解
在本篇文章里小編給大家分享的是一篇關(guān)于python中scipy.stats產(chǎn)生隨機(jī)數(shù)實(shí)例講解內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。2021-02-02PyTorch實(shí)現(xiàn)多維度特征輸入邏輯回歸
這篇文章主要介紹了PyTorch實(shí)現(xiàn)多維度特征輸入邏輯回歸,首先進(jìn)行數(shù)據(jù)采取數(shù)據(jù)集展開(kāi)詳細(xì)內(nèi)容,需要的小伙伴可以參考一下2022-03-03