Python文件操作的方法
目標:
- 文件的概念
- 文件的基本操作
- 文件/文件夾的常用操作
- 文本文件的編碼方式
1.文件的概念
1.1文件的概念和作用
計算機的文件,就是存儲在某種長期存儲設(shè)備上的一段數(shù)據(jù)
長期存儲設(shè)備包括:硬盤、U盤、移動硬盤、光盤····
文件的作用:
將數(shù)據(jù)長期存儲下來,在需要的時候使用

1.2文件的存儲方式
- 在計算機中,文件是以二進制的方式保存在磁盤上的
文本文件和二進制文件
- 文本文件
- 可以用文本編輯軟件查看
- 本質(zhì)上還是二進制
- 例如:Python源文件
- 二進制文件
- 保存的內(nèi)容不是給人直接閱讀的,而是提供給其他軟件使用的
- 例如:圖片文件、音頻文件、視頻文件等等
- 二進制文件不能直接使用文本編輯器查看
2.文件的基本操作
2.1操作文件的套路
在計算機中,要操作文件的套路非常固定,一共包含三個步驟:
- 打開文件
- 讀、寫文件
- 讀:將文件內(nèi)容讀入內(nèi)存
- 寫:將內(nèi)存內(nèi)容寫入文件
- 關(guān)閉文件
2.2操作文件的函數(shù)/方法
- 在Python中操作文件需要記住1個函數(shù)和3個方法
| 序號 | 函數(shù)/方法 | 說明 |
|---|---|---|
| 1 | open | 打開文件,并返回文件操作對象 |
| 2 | read | 將文件內(nèi)容讀取到內(nèi)存 |
| 3 | write | 將指定內(nèi)容寫入到文件 |
| 4 | close | 關(guān)閉文件 |
- open() 函數(shù)負責打開文件,并返回文件對象
- read/write/close三個方法都需要通過文件對象來調(diào)用
2.3read方法——讀取文件
- open函數(shù)的第一個參數(shù),是被打開的文件名(文件名區(qū)分大小寫)
- 如果文件存在,返回文件操作對象
- 如果文件不存在,會拋出異常
- read方法 可以一次性讀入并返回 文件的所有內(nèi)容
- close方法 負責關(guān)閉文件
- 如果忘記關(guān)閉文件,會造成系統(tǒng)資源消耗,而且會影響到后續(xù)對文件的訪問
- 注意:方法執(zhí)行后,會把文件指針移動到文件的末尾
- 提示:
- 在開發(fā)中,通常先編寫打開和關(guān)閉的代碼,在編寫中間針對文件讀/寫操作!
#獲得文件操作對象(sis.txt文件)
file = open("sis.txt")
#讀取
text = file.read()
print(text)
#關(guān)閉文件
file.close()
'''
運行結(jié)果
我是中文的哦
nidie中文
'''
- 文件指針文件指針
- 文件指針 標記 從那個位置開始讀取數(shù)據(jù)
- 第一次打開文件時,通常文件指針會指向文件開始的位置
- 當執(zhí)行了read方法后,文件指針會移動到讀取內(nèi)容的末尾
- 默認情況下會移動到文件末尾
- 思考:如果執(zhí)行了一次read方法,讀取了所有內(nèi)容,那么再次調(diào)用read方法還能獲取到內(nèi)容嗎?
- 答案:不能。第一次讀取內(nèi)容后,文件指針移動到文件末尾,再次調(diào)用不會讀取到任何內(nèi)容
文件指針演示
#獲得文件操作對象(sis.txt文件)
file = open("sis.txt")
#讀取
text = file.read()
#查看讀取文件的長度 (14)
print(len(text))
#輸出讀取到的文件
print(text)
print("*"*30)
#重新讀取文件
text = file.read()
print(text) # 空
print(len(text)) # (0)
#關(guān)閉文件
file.close()
"""
運行結(jié)果:
14
我是中文的哦
nidie中文
******************************
0
"""
2.4打開文件的方式
- open函數(shù)默認以只讀方式打開,并返回文件對象
語法如下:
f = open( " 文件名 " , " 訪問方式 " )

提示:頻繁的移動指針,會影響文件讀寫效率,開發(fā)中更多的時候會以 只讀、只寫 的方式來操作文件
2.5按行讀取文件內(nèi)容
- read方法默認會把文件的所有內(nèi)容一次性讀到內(nèi)存
- 如果文件太大,對內(nèi)存的占用會非常嚴重
readline 方法:
- 可以一次讀取一行內(nèi)容
- 方法執(zhí)行后,會把指針移動到下一行,準備再次讀取
讀取大文件的正確姿勢:
#打開文件
file = open("sis.txt")
while True:
#讀取一行內(nèi)容
text = file.readline()
#判斷是否讀取到內(nèi)容
if text == "": #或者 if not text:
print(type(text)) #<class 'str'>
break
#每讀取到末尾都會有一個 \n
print(text,end="")
"""
運行結(jié)果:
python1一
python2二
python3三
python4四<class 'str'>
"""
2.6文件讀寫案例——復制文件
目標:用代碼實現(xiàn)文件的復制過程
小文件復制
打開一個已有文件,讀取完整內(nèi)容,并寫入到另一個文件
#復制小文件方式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()
#復制小文件方式2 推薦(with關(guān)鍵字,會自動釋放文件對象空間)
test = None
with open("sis.txt","r") as file:
test = file.read()
with open("test1.txt","w") as file:
file.write(test)
大文件復制
打開一個已有文件,逐行讀取內(nèi)容,并順序?qū)懭氲搅硪粋€文件
#大文件復制
file_read = open("五筆詞根1.jpg","rb")
file_write = open("五筆詞根2.jpg","wb")
while True:
text = file_read.readline()
#python中,除了‘'、""、0、()、[]、{}、None為False, 其他轉(zhuǎn)換都為True。 也就是說字符串如果不為空,則永遠轉(zhuǎn)換為True。
if not text:
break
file_write.write(text)
file_read.close()
file_write.close()
2.7文件讀寫中的函數(shù)
3.文件/目錄的常用管理操作
- 在 終端/文件瀏覽 中可以執(zhí)行常規(guī)的 文件/目錄 管理操作,例如
創(chuàng)建、重命名、刪除、改變路勁、查看目錄內(nèi)容........
- 在Python中如果希望通過程序?qū)崿F(xiàn)上述功能,需要導入 os 模塊
文件操作:

目錄操作:

提示:文件或者目錄操作,都支持相對路徑和絕對路勁
4.文本文件的編碼方式
pass
# -*- coding: utf8 -*-
# -*- coding: utf-8 -*-
# -*- coding: gbk -*-
5.拓展:eval函數(shù)
eval函數(shù)功能非常強大——將字符串當成有效的表達式來求值,并返回計算結(jié)果
# -*- coding: gbk -*-
#基本的數(shù)學計算
print(eval("1+1"))
#字符串重復
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':'蘋果','age':18}")))
案例——計算器
input_str = input("輸入算數(shù)題")
print(eval(input_str))
'''
運行:
輸入算數(shù)題1+1
2
'''
注意:在開發(fā)的時候千萬不要使用 eval 直接轉(zhuǎn)換 input 的結(jié)果

以上所述是小編給大家介紹的Python文件操作的方法,希望對大家有所幫助。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
Python神奇的內(nèi)置函數(shù)locals的實例講解
今天小編就為大家分享一篇關(guān)于Python神奇的內(nèi)置函數(shù)locals的實例講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-02-02
Pytorch中Tensor與各種圖像格式的相互轉(zhuǎn)化詳解
這篇文章主要介紹了Pytorch中Tensor與各種圖像格式的相互轉(zhuǎn)化詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-12-12
Python?pickle模塊實現(xiàn)Python對象持久化存儲
這篇文章主要介紹了Python?pickle模塊實現(xiàn)Python對象持久化存儲,pickle?是?python?語言的一個標準模塊,和python安裝時共同安裝好的一個模塊。下文基于pickle模塊展開實現(xiàn)Python對象持久化存儲的詳細內(nèi)容,需要的朋友可以參考一下2022-05-05
Python-OpenCV實現(xiàn)圖像缺陷檢測的實例
本文將結(jié)合實例代碼,在Jupyter Notebook上使用Python+opencv實現(xiàn)如下圖像缺陷檢測。需要的朋友們下面隨著小編來一起學習學習吧2021-06-06
基于python if 判斷選擇結(jié)構(gòu)的實例詳解
代碼執(zhí)行結(jié)構(gòu)為順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)。這篇文章主要介紹了python if 判斷選擇結(jié)構(gòu)的相關(guān)知識,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2019-05-05

