Python文件操作的方法
目標(biāo):
- 文件的概念
- 文件的基本操作
- 文件/文件夾的常用操作
- 文本文件的編碼方式
1.文件的概念
1.1文件的概念和作用
計(jì)算機(jī)的文件,就是存儲(chǔ)在某種長(zhǎng)期存儲(chǔ)設(shè)備上的一段數(shù)據(jù)
長(zhǎng)期存儲(chǔ)設(shè)備包括:硬盤(pán)、U盤(pán)、移動(dòng)硬盤(pán)、光盤(pán)····
文件的作用:
將數(shù)據(jù)長(zhǎng)期存儲(chǔ)下來(lái),在需要的時(shí)候使用
1.2文件的存儲(chǔ)方式
- 在計(jì)算機(jī)中,文件是以二進(jìn)制的方式保存在磁盤(pán)上的
文本文件和二進(jìn)制文件
- 文本文件
- 可以用文本編輯軟件查看
- 本質(zhì)上還是二進(jìn)制
- 例如:Python源文件
- 二進(jìn)制文件
- 保存的內(nèi)容不是給人直接閱讀的,而是提供給其他軟件使用的
- 例如:圖片文件、音頻文件、視頻文件等等
- 二進(jìn)制文件不能直接使用文本編輯器查看
2.文件的基本操作
2.1操作文件的套路
在計(jì)算機(jī)中,要操作文件的套路非常固定,一共包含三個(gè)步驟:
- 打開(kāi)文件
- 讀、寫(xiě)文件
- 讀:將文件內(nèi)容讀入內(nèi)存
- 寫(xiě):將內(nèi)存內(nèi)容寫(xiě)入文件
- 關(guān)閉文件
2.2操作文件的函數(shù)/方法
- 在Python中操作文件需要記住1個(gè)函數(shù)和3個(gè)方法
序號(hào) | 函數(shù)/方法 | 說(shuō)明 |
---|---|---|
1 | open | 打開(kāi)文件,并返回文件操作對(duì)象 |
2 | read | 將文件內(nèi)容讀取到內(nèi)存 |
3 | write | 將指定內(nèi)容寫(xiě)入到文件 |
4 | close | 關(guān)閉文件 |
- open() 函數(shù)負(fù)責(zé)打開(kāi)文件,并返回文件對(duì)象
- read/write/close三個(gè)方法都需要通過(guò)文件對(duì)象來(lái)調(diào)用
2.3read方法——讀取文件
- open函數(shù)的第一個(gè)參數(shù),是被打開(kāi)的文件名(文件名區(qū)分大小寫(xiě))
- 如果文件存在,返回文件操作對(duì)象
- 如果文件不存在,會(huì)拋出異常
- read方法 可以一次性讀入并返回 文件的所有內(nèi)容
- close方法 負(fù)責(zé)關(guān)閉文件
- 如果忘記關(guān)閉文件,會(huì)造成系統(tǒng)資源消耗,而且會(huì)影響到后續(xù)對(duì)文件的訪(fǎng)問(wèn)
- 注意:方法執(zhí)行后,會(huì)把文件指針移動(dòng)到文件的末尾
- 提示:
- 在開(kāi)發(fā)中,通常先編寫(xiě)打開(kāi)和關(guān)閉的代碼,在編寫(xiě)中間針對(duì)文件讀/寫(xiě)操作!
#獲得文件操作對(duì)象(sis.txt文件) file = open("sis.txt") #讀取 text = file.read() print(text) #關(guān)閉文件 file.close() ''' 運(yùn)行結(jié)果 我是中文的哦 nidie中文 '''
- 文件指針文件指針
- 文件指針 標(biāo)記 從那個(gè)位置開(kāi)始讀取數(shù)據(jù)
- 第一次打開(kāi)文件時(shí),通常文件指針會(huì)指向文件開(kāi)始的位置
- 當(dāng)執(zhí)行了read方法后,文件指針會(huì)移動(dòng)到讀取內(nèi)容的末尾
- 默認(rèn)情況下會(huì)移動(dòng)到文件末尾
- 思考:如果執(zhí)行了一次read方法,讀取了所有內(nèi)容,那么再次調(diào)用read方法還能獲取到內(nèi)容嗎?
- 答案:不能。第一次讀取內(nèi)容后,文件指針移動(dòng)到文件末尾,再次調(diào)用不會(huì)讀取到任何內(nèi)容
文件指針演示
#獲得文件操作對(duì)象(sis.txt文件) file = open("sis.txt") #讀取 text = file.read() #查看讀取文件的長(zhǎng)度 (14) print(len(text)) #輸出讀取到的文件 print(text) print("*"*30) #重新讀取文件 text = file.read() print(text) # 空 print(len(text)) # (0) #關(guān)閉文件 file.close() """ 運(yùn)行結(jié)果: 14 我是中文的哦 nidie中文 ****************************** 0 """
2.4打開(kāi)文件的方式
- open函數(shù)默認(rèn)以只讀方式打開(kāi),并返回文件對(duì)象
語(yǔ)法如下:
f = open( " 文件名 " , " 訪(fǎng)問(wèn)方式 " )
提示:頻繁的移動(dòng)指針,會(huì)影響文件讀寫(xiě)效率,開(kāi)發(fā)中更多的時(shí)候會(huì)以 只讀、只寫(xiě) 的方式來(lái)操作文件
2.5按行讀取文件內(nèi)容
- read方法默認(rèn)會(huì)把文件的所有內(nèi)容一次性讀到內(nèi)存
- 如果文件太大,對(duì)內(nèi)存的占用會(huì)非常嚴(yán)重
readline 方法:
- 可以一次讀取一行內(nèi)容
- 方法執(zhí)行后,會(huì)把指針移動(dòng)到下一行,準(zhǔn)備再次讀取
讀取大文件的正確姿勢(shì):
#打開(kāi)文件 file = open("sis.txt") while True: #讀取一行內(nèi)容 text = file.readline() #判斷是否讀取到內(nèi)容 if text == "": #或者 if not text: print(type(text)) #<class 'str'> break #每讀取到末尾都會(huì)有一個(gè) \n print(text,end="") """ 運(yùn)行結(jié)果: python1一 python2二 python3三 python4四<class 'str'> """
2.6文件讀寫(xiě)案例——復(fù)制文件
目標(biāo):用代碼實(shí)現(xiàn)文件的復(fù)制過(guò)程
小文件復(fù)制
打開(kāi)一個(gè)已有文件,讀取完整內(nèi)容,并寫(xiě)入到另一個(gè)文件
#復(fù)制小文件方式1 file_read = open("sis.txt","r") file_write = open("test.txt","w") text_1 = file_read.read() text_2 = file_write.write(text_1) file_write.close() file_read.close() #復(fù)制小文件方式2 推薦(with關(guān)鍵字,會(huì)自動(dòng)釋放文件對(duì)象空間) test = None with open("sis.txt","r") as file: test = file.read() with open("test1.txt","w") as file: file.write(test)
大文件復(fù)制
打開(kāi)一個(gè)已有文件,逐行讀取內(nèi)容,并順序?qū)懭氲搅硪粋€(gè)文件
#大文件復(fù)制 file_read = open("五筆詞根1.jpg","rb") file_write = open("五筆詞根2.jpg","wb") while True: text = file_read.readline() #python中,除了‘'、""、0、()、[]、{}、None為False, 其他轉(zhuǎn)換都為T(mén)rue。 也就是說(shuō)字符串如果不為空,則永遠(yuǎn)轉(zhuǎn)換為T(mén)rue。 if not text: break file_write.write(text) file_read.close() file_write.close()
2.7文件讀寫(xiě)中的函數(shù)
3.文件/目錄的常用管理操作
- 在 終端/文件瀏覽 中可以執(zhí)行常規(guī)的 文件/目錄 管理操作,例如
創(chuàng)建、重命名、刪除、改變路勁、查看目錄內(nèi)容........
- 在Python中如果希望通過(guò)程序?qū)崿F(xiàn)上述功能,需要導(dǎo)入 os 模塊
文件操作:
目錄操作:
提示:文件或者目錄操作,都支持相對(duì)路徑
和絕對(duì)路勁
4.文本文件的編碼方式
pass
# -*- coding: utf8 -*-
# -*- coding: utf-8 -*-
# -*- coding: gbk -*-
5.拓展:eval函數(shù)
eval函數(shù)功能非常強(qiáng)大——將字符串當(dāng)成有效的表達(dá)式來(lái)求值,并返回計(jì)算結(jié)果
# -*- coding: gbk -*- #基本的數(shù)學(xué)計(jì)算 print(eval("1+1")) #字符串重復(fù) print(eval("'*'*30")) #將字符串轉(zhuǎn)變成列表 print(type(eval("[1,2,3,4,5]"))) #將字符串轉(zhuǎn)變成元組 print(type(eval("(1,2,3,4,5)"))) #將字符串轉(zhuǎn)變成字典 print(type(eval("{'name':'蘋(píng)果','age':18}")))
案例——計(jì)算器
input_str = input("輸入算數(shù)題") print(eval(input_str)) ''' 運(yùn)行: 輸入算數(shù)題1+1 2 '''
注意:在開(kāi)發(fā)的時(shí)候千萬(wàn)不要使用 eval 直接轉(zhuǎn)換 input 的結(jié)果
以上所述是小編給大家介紹的Python文件操作的方法,希望對(duì)大家有所幫助。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
使用Python腳本實(shí)現(xiàn)批量網(wǎng)站存活檢測(cè)遇到問(wèn)題及解決方法
本文是小編自己編寫(xiě)的一個(gè)使用python實(shí)現(xiàn)批量網(wǎng)站存活檢測(cè)。在項(xiàng)目測(cè)試中非常有用。本文給大家分享了遇到的問(wèn)題及解決方案,非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起看看吧2016-10-10用Python爬取618當(dāng)天某東熱門(mén)商品銷(xiāo)量數(shù)據(jù),看看大家喜歡什么!
618購(gòu)物節(jié),準(zhǔn)備分析一波購(gòu)物節(jié)大家都喜歡買(mǎi)什么?本文以某東為例,Python爬取618活動(dòng)的暢銷(xiāo)商品數(shù)據(jù),并進(jìn)行數(shù)據(jù)清洗,最后以可視化的方式從不同角度去了解暢銷(xiāo)商品中,名列前茅的商品是哪些?銷(xiāo)售數(shù)據(jù)如何?用戶(hù)好評(píng)如何?等等,需要的朋友可以參考下2021-06-06python中CURL 和python requests的相互轉(zhuǎn)換實(shí)現(xiàn)
本文主要介紹了python中CURL 和python requests的相互轉(zhuǎn)換實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03基于Python寫(xiě)個(gè)"點(diǎn)球大戰(zhàn)"小游戲
這篇文章主要為大家詳細(xì)介紹了如何利用Python寫(xiě)個(gè)簡(jiǎn)單的"點(diǎn)球大戰(zhàn)"小游戲,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-12-12如何使用Python修改matplotlib.pyplot.colorbar的位置以對(duì)齊主圖
使用matplotlib.colors模塊可以完成大多數(shù)常見(jiàn)的任務(wù),下面這篇文章主要給大家介紹了關(guān)于如何使用Python修改matplotlib.pyplot.colorbar的位置以對(duì)齊主圖的相關(guān)資料,需要的朋友可以參考下2022-07-07用Python制作檢測(cè)Linux運(yùn)行信息的工具的教程
這篇文章主要介紹了用Python制作檢測(cè)Linux運(yùn)行信息的工具的教程,主要是用CPython讀取運(yùn)行系統(tǒng)的硬件參數(shù)、網(wǎng)絡(luò)傳輸流量統(tǒng)計(jì)等,需要的朋友可以參考下2015-04-04tensorflow創(chuàng)建變量以及根據(jù)名稱(chēng)查找變量
這篇文章主要為大家詳細(xì)介紹了tensorflow創(chuàng)建變量以及根據(jù)名稱(chēng)查找變量,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03