欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Python中的文件操作

 更新時(shí)間:2023年07月27日 15:20:15   作者:鮑憲立  
在日常生活中,文件操作主要包括打開、關(guān)閉、讀、寫等操作,這篇文章主要為大家詳細(xì)介紹了Python中這些文件操作的實(shí)現(xiàn),需要的可以了解下

一、文件的編碼

1.1 背景

thinking:計(jì)算機(jī)只能識(shí)別:0和1,那么我們豐富的文本文件是如何被計(jì)算機(jī)識(shí)別,并存儲(chǔ)在硬盤中呢?

answer:使用編碼技術(shù)(密碼本)將內(nèi)容翻譯成0和1存入。

編碼技術(shù)即:翻譯的規(guī)則,記錄了如何將內(nèi)容翻譯成二進(jìn)制,以及如何將二進(jìn)制翻譯回可識(shí)別內(nèi)容。

計(jì)算機(jī)中有許多可用編碼:

  • UTF-8
  • GBK
  • Big5
  • ...

不同的編碼,將內(nèi)容翻譯成二進(jìn)制也是不同的。

UTF-8是目前全球通用的編碼格式。除非有特殊需求,否則,一律以UTF-8格式進(jìn)行文件編碼即可。

1.2 總結(jié)

二、文件的讀取

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 文件操作的內(nèi)容

在日常生活中,文件操作主要包括打開、關(guān)閉、讀、寫等操作。

2.3 文件的操作步驟

大概可以分為三個(gè)步驟(簡(jiǎn)稱文件操作三步走):

①打開文件

②讀寫文件

③關(guān)閉文件

注意:可以只打開和關(guān)閉文件,不進(jìn)行任何讀寫。

2.3.1 open()打開函數(shù)

在Python,使用open函數(shù),可以打開一個(gè)已經(jīng)存在的文件,或者創(chuàng)建一個(gè)新文件,語(yǔ)法如下

open(name, mode, encoding)
  • name:是要打開的目標(biāo)文件名的字符串(可以包含文件所在的具體路徑)。
  • mode:設(shè)置打開文件的模式(訪問模式):只讀、寫入、追加等。
  • encoding:編碼格式(推薦使用UTF-8)

實(shí)例代碼:

f = open('python.txt', 'r', encoding='UTF-8')
# encoding的順序不是第三位,所以不能用位置參數(shù),用關(guān)鍵字參數(shù)直接指定

注意:此時(shí)的'f'是'open'函數(shù)的文件對(duì)象,對(duì)象是Python中一種特殊的數(shù)據(jù)類型,擁有屬性和方法,可以使用對(duì)象.屬性或?qū)ο?方法對(duì)其進(jìn)行訪問,w相當(dāng)于是覆蓋寫入。

mode常用的三種基礎(chǔ)訪問模式

2.3.2 讀操作相關(guān)方法

read()方法:

文件對(duì)象.read(num)

num表示要從文件中讀取的數(shù)據(jù)的長(zhǎng)度(單位是字節(jié)),如果沒有傳入num,那么就表示讀取文件中所有的數(shù)據(jù)。

readlines()方法:

readlines可以按照行的方式把整個(gè)文件中的內(nèi)容進(jìn)行一次性讀取,并且返回的是一個(gè)列表,其中每一行的數(shù)據(jù)為一個(gè)元素。

f = open('python.txt')
content = f.readlines()
# ['hello world\n', 'abcdefg\n', 'aaa\n', 'bbb\n', 'ccc']
print(content)
# 關(guān)閉文件
f.close()

readline()方法,一次讀取一行內(nèi)容

f = open('python.txt')
content = f.readline()
print(f'第一行{content}')
content = f.readline()
print(f'第二行{content}')
# 關(guān)閉文件
f.close()

for循環(huán)讀取文件行

for line in open('python.txt', "r"):
	print(line)
# 每一個(gè)line臨時(shí)變量,就記錄了文件的一行數(shù)據(jù)

close():關(guān)閉文件對(duì)象

f = open('python.txt', "r")
f.close()
# 最后通過close,關(guān)閉文件對(duì)象,也就是關(guān)閉對(duì)文件的占用
# 如果不調(diào)用close,同時(shí)程序沒有停止運(yùn)行,那么這個(gè)文件將一直被python程序占用。

with open語(yǔ)法

with open('python.txt', 'r') as f:
    f.readlines()
# 通過在with open的語(yǔ)句塊中對(duì)文件進(jìn)行操作
# 可以在操作完成后自動(dòng)關(guān)閉close文件,避免遺忘掉close方法

2.3.3 操作匯總

2.3.4 總結(jié)

2.3.5 課后練習(xí):?jiǎn)卧~計(jì)數(shù)

# 通過文件讀取操作,讀取文件word.txt,統(tǒng)計(jì)itheima單詞出現(xiàn)的次數(shù)
# 打開文件,以讀取模式打開
# 我的思路
# with open("word.txt") as f:
#     contents = f.readlines()
#     count = 0
#     print(contents)
#     for content in contents:
#         content.split(" ")
#         if content.count("itheima"):
#             count += 1
#     print(f"itheima出現(xiàn)了{(lán)count}次")
# 參考其他方法
f = open("word.txt", "r", encoding="UTF-8")
# 方式2:讀取全部?jī)?nèi)容,通過字符串count統(tǒng)計(jì)itheima單詞數(shù)量
# content = f.read()
# count = content.count("itheima")
# print(f"itheima在文件中出現(xiàn)了:{count}次")
# 方式三:讀取內(nèi)容,一行一行讀取
count = 0  # 使用count變量來累計(jì)itheima出現(xiàn)的次數(shù)
for line in f:
    line = line.strip()  # 去除開頭和結(jié)尾的空格以及換行符
    words = line.split(" ")
    for word in words:
        if word == "itheima":
            count += 1  # 如果單詞是itheima,進(jìn)行數(shù)量的累加加1
# 判斷單詞出現(xiàn)次數(shù)并累計(jì)
print(f"itheima出現(xiàn)的次數(shù)是:{count}")
# 關(guān)閉文件
f.close()

三、文件的寫入

3.1 案例演示

# f.write("Hello world1111!")  # 內(nèi)容寫到內(nèi)存中
# flush刷新
# f.flush()  # 將內(nèi)存中積攢的內(nèi)容,寫入到硬盤
# close關(guān)閉
# f.close()  # close方法,內(nèi)置了flush的功能的
f = open("test.txt", "w", encoding="UTF-8")
# write寫入、flush刷新
f.write("小鮑學(xué)python")
# close關(guān)閉
f.close()

注意:

  • 直接調(diào)用write,內(nèi)容并為真正寫入文件,而是會(huì)積攢在程序的內(nèi)存中,稱之為緩沖區(qū)
  • 當(dāng)調(diào)用flush的時(shí)候,內(nèi)容才會(huì)真正寫入文件
  • 這樣做是避免頻繁地操作硬盤,導(dǎo)致效率下降(攢一堆,一次性寫入磁盤)

寫操作注意

  • 文件如果不存在,使用”w”模式,會(huì)創(chuàng)建新文件
  • 文件如果存在,使用”w”模式,會(huì)將原有內(nèi)容清空

3.2 總結(jié)

四、文件的追加

4.1 追加寫入操作快速入門

"""
演示文件的追加寫入
"""
# 打開文件,不存在的文件
# f = open("test1.txt", "a", encoding="UTF-8")
# # write寫入
# f.write("小鮑學(xué)python")
# # flush刷新
# f.flush()
# # close關(guān)閉文件
# f.close()
f = open("test1.txt", "a", encoding="UTF-8")
# write寫入,flush刷新
f.write("\n月薪過萬")
# close()關(guān)閉
f.close()

注意:

  • a模式,文件不存在會(huì)創(chuàng)建文件
  • a模式,文件存在會(huì)在最后,追加寫入文件

4.2 追加操作總結(jié)

五、文件操作綜合案例

5.1 完成文件備份案例

需求分析

需求:有一份賬單文件,記錄了消費(fèi)收入的具體記錄,內(nèi)容如下:

name,date,money,type,remarks
周杰輪,2022-01-01,100000,消費(fèi),正式
周杰輪,2022-01-02,300000,收入,正式
周杰輪,2022-01-03,100000,消費(fèi),測(cè)試
林俊節(jié),2022-01-01,300000,收入,正式
林俊節(jié),2022-01-02,100000,消費(fèi),測(cè)試
林俊節(jié),2022-01-03,100000,消費(fèi),正式
林俊節(jié),2022-01-04,100000,消費(fèi),測(cè)試
林俊節(jié),2022-01-05,500000,收入,正式
張學(xué)油,2022-01-01,100000,消費(fèi),正式
張學(xué)油,2022-01-02,500000,收入,正式
張學(xué)油,2022-01-03,900000,收入,測(cè)試
王力鴻,2022-01-01,500000,消費(fèi),正式
王力鴻,2022-01-02,300000,消費(fèi),測(cè)試
王力鴻,2022-01-03,950000,收入,正式
劉德滑,2022-01-01,300000,消費(fèi),測(cè)試
劉德滑,2022-01-02,100000,消費(fèi),正式
劉德滑,2022-01-03,300000,消費(fèi),正式

要求將內(nèi)容復(fù)制并保存為 bill.txt文件

"""
演示文件操作綜合案例:文件備份
"""
# 我的寫法,一開始理解有誤了,題目的要求是測(cè)試的數(shù)據(jù)不需要備份到bak文件
# 讀取文件
# f = open("bill.txt", "r", encoding="UTF-8")
# # 將文件寫出到bill.txt.bak文件作為備份
# f_bak = open("bill.txt.bak", "w", encoding="UTF-8")
# flag = True
# for lines in f:
#     for line in lines:
#         if line == "測(cè)" or line == "試":
#             flag = False
#     if flag:
#         f_bak.write(lines)
#     flag = True
#
# # 關(guān)閉文件
# f.close()
# f_bak.close()
# 參考寫法
# 打開文件得到文件對(duì)象,準(zhǔn)備讀取
fr = open("bill.txt", "r", encoding="UTF-8")
# 打開文件得到文件對(duì)象,準(zhǔn)備寫入
fw = open("bill.txt.bak", "w", encoding="UTF-8")
# for循環(huán)讀取文件
for line in fr:
    line = line.strip()
    # 判斷內(nèi)容,將滿足的內(nèi)容寫出
    if line.split(",")[4] == "測(cè)試":
        continue
    # 將內(nèi)容寫出去
    fw.write(line)
    # 由于前面對(duì)內(nèi)容進(jìn)行了strip()的操作,所以要手動(dòng)的寫出換行符
    fw.write("\n")
# close2個(gè)文件對(duì)象
fr.close()
fw.close()  # 寫出文件調(diào)用close()會(huì)自動(dòng)flush()

以上就是詳解Python中的文件操作 的詳細(xì)內(nèi)容,更多關(guān)于Python文件操作 的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 使用 Python 讀取電子表格中的數(shù)據(jù)實(shí)例詳解

    使用 Python 讀取電子表格中的數(shù)據(jù)實(shí)例詳解

    這篇文章主要介紹了使用 Python 讀取電子表格中的數(shù)據(jù),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • python打包exe文件并隱藏執(zhí)行CMD命令窗口問題

    python打包exe文件并隱藏執(zhí)行CMD命令窗口問題

    這篇文章主要介紹了python打包exe文件并隱藏執(zhí)行CMD命令窗口問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • 使用Django開發(fā)簡(jiǎn)單接口實(shí)現(xiàn)文章增刪改查

    使用Django開發(fā)簡(jiǎn)單接口實(shí)現(xiàn)文章增刪改查

    這篇文章主要介紹了使用Django開發(fā)簡(jiǎn)單接口實(shí)現(xiàn)文章增刪改查,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • Python with標(biāo)簽使用方法解析

    Python with標(biāo)簽使用方法解析

    這篇文章主要介紹了Python with標(biāo)簽使用方法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • 解決PyCharm不在run輸出運(yùn)行結(jié)果而不是再Console里輸出的問題

    解決PyCharm不在run輸出運(yùn)行結(jié)果而不是再Console里輸出的問題

    這篇文章主要介紹了解決PyCharm不在run輸出運(yùn)行結(jié)果而不是再Console里輸出的問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Python 比較兩個(gè)數(shù)組的元素的異同方法

    Python 比較兩個(gè)數(shù)組的元素的異同方法

    下面小編就為大家?guī)硪黄狿ython 比較兩個(gè)數(shù)組的元素的異同方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-08-08
  • 將pytorch的網(wǎng)絡(luò)等轉(zhuǎn)移到cuda

    將pytorch的網(wǎng)絡(luò)等轉(zhuǎn)移到cuda

    這篇文章主要介紹了將pytorch的網(wǎng)絡(luò)等轉(zhuǎn)移到cuda的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • 在Python中操作字符串之startswith()方法的使用

    在Python中操作字符串之startswith()方法的使用

    這篇文章主要介紹了在Python中操作字符串之startswith()方法的使用,是Python入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-05-05
  • python?中?lxml?的?etree?標(biāo)簽解析

    python?中?lxml?的?etree?標(biāo)簽解析

    這篇文章主要介紹了python?中l(wèi)xml的etree?標(biāo)簽解析,文章圍繞主題展開詳細(xì)內(nèi)容,需要的小伙伴可以參考一下,希望對(duì)你的學(xué)習(xí)或工作有所幫助
    2022-04-04
  • 將Python代碼嵌入C++程序進(jìn)行編寫的實(shí)例

    將Python代碼嵌入C++程序進(jìn)行編寫的實(shí)例

    這篇文章主要介紹了將Python代碼嵌入C++程序進(jìn)行編寫的實(shí)例,盡管通常還是Python代碼中調(diào)用C++程序的情況較多...需要的朋友可以參考下
    2015-07-07

最新評(píng)論