個(gè)人注冊(cè)的網(wǎng)站可以做公司宣傳用嗎谷歌app官方下載
目錄
1.?文件編碼的概念
2.?文件的讀取操作
2.1?什么是文件
2.2?open()打開函數(shù)
2.3?mode常用的三種基礎(chǔ)訪問模式
2.4?文件操作及案例
3.?文件的寫入操作及刷新文件:write與flush
4.?文件的追加操作
5.?文件操作的綜合案例(文件備份操作)
1.?文件編碼的概念
常見:UTF-8、GBK、Big5編碼等等..與Java一樣,所有的計(jì)算機(jī)編碼概念都一樣,類型不一樣。
2.?文件的讀取操作
2.1?什么是文件
????????內(nèi)存中存放的數(shù)據(jù)在計(jì)算機(jī)關(guān)機(jī)后就會(huì)消失。要長(zhǎng)久保存數(shù)據(jù),就要使用硬盤、光盤、U盤等設(shè)備。為了便于數(shù)據(jù)的管理和檢索,引入了“文件”的概念。
一篇文章、一段視頻、一個(gè)可執(zhí)行程序,都可以被保存為一個(gè)文件,并賦予一個(gè)文件名。操作系統(tǒng)以文件為單位管理磁盤中的數(shù)據(jù)。一般來說,文件可分為文本文件、視頻文件、音頻文件、圖像文件、可執(zhí)行文件等多種類別。
2.2?open()打開函數(shù)
(使用Python操作文件就需要用到open函數(shù))
# open()打開函數(shù)
# open(name, mode, encoding)
# name: 是要打開的目標(biāo)文件名的字符串(可以包含文件所在的具體路徑)
# mode: 設(shè)置打開文件的模式(訪問模式):只讀\寫入\追加等
# encoding: 編碼格式(推薦UTF-8) 在這里需要用關(guān)鍵字參數(shù)直接指定,因?yàn)閑ncoding不是位置參數(shù)
f = open("pythonLearn", 'r', encoding="UTF-8")
# f是`open`函數(shù)的文件對(duì)象
print(f.read()) # 讀取文件內(nèi)容
2.3?mode常用的三種基礎(chǔ)訪問模式
(mode是open函數(shù)的第二個(gè)參數(shù),其作用是對(duì)文件的操作方式)
open函數(shù)中的'w'操作,當(dāng)前文件打開后,既第一次打開文件的時(shí)候會(huì)清空文件,但是打開文件后,并沒有關(guān)閉他,且不斷的往里面寫入數(shù)據(jù),因此可以做到一個(gè)備份文件操作。
模式 | 描述 |
r | 以只讀方式打開文件。文件的指針將會(huì)放在文件的開頭。這是默認(rèn)模式。 |
w | 打開一個(gè)文件只用于寫入。如果該文件已存在則打開文件,并從開頭開始編輯,原有內(nèi)容會(huì)被刪除。如果該文件不存在,創(chuàng)建新文件。 |
a | 打開一個(gè)文件用于追加。如果該文件已存在,新的內(nèi)容將會(huì)被寫入到已有內(nèi)容之后,如果該文件不存在,創(chuàng)建新文件進(jìn)行寫入。 |
2.4?文件操作及案例
- 當(dāng)前f的代表open讀取文件后的賦值
1. 文件讀取操作( 文件對(duì)象.read() || 文件對(duì)象.readlines() )
- read() || readlines() 使用注意:當(dāng)前文件被兩個(gè)read同時(shí)讀取的時(shí)候,第二個(gè)read會(huì)從第一個(gè)read讀取的結(jié)尾處繼續(xù)讀取。
- readlines() || read() 使用注意:當(dāng)次文件在之前被讀取了之后,使用readlines再次讀取文件 雖然方法不一樣,但是文件還是被read方法所影響,相當(dāng)于讀取文件的時(shí)候會(huì)有一個(gè)指針,read讀取完后指針指向哪個(gè)點(diǎn),剩余讀取文件的方法就會(huì)繼續(xù)從當(dāng)前指針繼續(xù)讀寫。
1.1 文件對(duì)象.read()方法:
????????一個(gè)文件對(duì)象在read時(shí)只會(huì)讀取一次,如果先執(zhí)行了f.read()方法后,后面的read()讀取不會(huì)再讀取到內(nèi)容;
f = open("pythonLearn", 'r', encoding="UTF-8")
print(f.read()) # 如果沒有傳入num, 就會(huì)表示讀取文件中所有的數(shù)據(jù)
# print(f.read(4)) # 讀取文件內(nèi)容,可以加上: 文件對(duì)象.read(num), num表示讀取文件的數(shù)據(jù)長(zhǎng)度(單位是字節(jié))
1.2?文件對(duì)象.readlines()方法:
f = open("pythonLearn", 'r', encoding="UTF-8")
# 可以按照行的方式把整個(gè)文件中的內(nèi)容進(jìn)行一次性讀取,并且返回的是一個(gè)列表,其中每一行的數(shù)據(jù)為一個(gè)元素
print(f.readlines())f.close() # 關(guān)閉文件
2.?文件讀取操作(文件對(duì)象.readline())
它會(huì)一行一行讀取數(shù)據(jù);
f = open("pythonLearn", 'r', encoding="UTF-8")print(f"第一行數(shù)據(jù):{f.readline()}")
print(f"第二行數(shù)據(jù):{f.readline()}")
3.?文件的讀取操作(for循環(huán))
f = open("pythonLearn", 'r', encoding="UTF-8")for line in f:print(f"文件的行數(shù)據(jù)是:{line}") # 每一個(gè)line臨時(shí)變量,記錄了文件的一行數(shù)據(jù)
4.?close關(guān)閉文件(當(dāng)前文件讀取完畢后都需要關(guān)閉次文件,不然次文件一直會(huì)被該程序占用)
f = open("pythonLearn", 'r', encoding="UTF-8")
f.close() # 關(guān)閉文件對(duì)象,關(guān)閉對(duì)文件的占用,如果不關(guān)閉就代表整個(gè)文件一直被python占用
5.?with open語(yǔ)法(文件操作后自動(dòng)關(guān)閉)
with open("pythonLearn", 'r', encoding="UTF-8") as f:print(f.readlines()) # 在with open語(yǔ)句塊中對(duì)文件進(jìn)行操作,它會(huì)自動(dòng)關(guān)閉close文件,避免遺忘
6.?讀取文件中一個(gè)單詞出現(xiàn)的次數(shù)案例
6.1?使用count對(duì)字符串的指定單詞計(jì)數(shù):
f = open("pythonLearn", 'r', encoding="UTF-8")# 方式1:讀取全部?jī)?nèi)容,通過count方法統(tǒng)計(jì)python單詞數(shù)量
count = f.read().count("python")
print(f"python在文件中出現(xiàn)了:{count}次")
6.2?使用for循環(huán):
f = open("pythonLearn", 'r', encoding="UTF-8")
count = 0 # 計(jì)數(shù)
for line in f:line = line.strip() # 去除開頭和結(jié)尾的空格以及換行符words = line.split(",")for word in words:if word == "python":count += 1
print(f"python出現(xiàn)的次數(shù)是:{count}")
f.close()
3.?文件的寫入操作及刷新文件:write與flush
- write與flush需要一起使用,因?yàn)榇藢懭胫皇菍懙懒藀ython的內(nèi)存中(或叫緩沖區(qū)),在flush后才是寫入到真正的文件中,或者使用close()方法,關(guān)閉后會(huì)自動(dòng)flush刷新,這樣做是避免頻繁的操作硬盤,導(dǎo)致效率下降(一堆,一次性寫磁盤;
- write寫入文件的時(shí)候,如果此文件不存在,那么就會(huì)創(chuàng)建一個(gè)新文件;
# 1.打開文件
f = open('my_txt', 'w')# 2.文件寫入
f.write("# 張三律師")# 3.內(nèi)容刷新
f.flush()
4.?文件的追加操作
- 'w' 代表mode中的第二種模式,文件存在則清空此文件,寫入數(shù)據(jù),文件不存在則創(chuàng)建一個(gè)新文件,插入數(shù)據(jù);
- 'a' 代表mode中的第三種模式,追加數(shù)據(jù)在文件中;
- 文件不存在會(huì)創(chuàng)建文件;
- 文件存在會(huì)在最后,追加寫入文件;
# 1.打開文件
f = open('my_txt', 'a')# 2.文件追加
f.write("# 尊師重道")# 3.內(nèi)容刷新
f.flush()
5.?文件操作的綜合案例(文件備份操作)
我的思路:open函數(shù)中的'w'操作,當(dāng)前文件打開后,既第一次打開文件的時(shí)候會(huì)清空文件,但是打開文件后,并沒有關(guān)閉他,且不斷的往里面寫入數(shù)據(jù),因此可以做到一個(gè)備份文件操作。
# 1.打開文件獲取文件對(duì)象
fr = open('my_txt', "r", encoding="UTF-8")
# 準(zhǔn)備寫入的文件對(duì)象
fw = open('my_text_copy', "w", encoding="UTF-8")for line in fr:line = line.strip() # 去除字符串前后空格fw.write(line) # 寫入到新文件fw.write("\n") # 寫入后換行fr.close()
fw.close()