国产av一二三区|日本不卡动作网站|黄色天天久久影片|99草成人免费在线视频|AV三级片成人电影在线|成年人aV不卡免费播放|日韩无码成人一级片视频|人人看人人玩开心色AV|人妻系列在线观看|亚洲av无码一区二区三区在线播放

網(wǎng)易首頁(yè) > 網(wǎng)易號(hào) > 正文 申請(qǐng)入駐

Python 編程B16:文件(一)

0
分享至

第十章 文件與數(shù)據(jù)格式化

隨著程序規(guī)模的增大,我們不再只處理內(nèi)存中的臨時(shí)數(shù)據(jù),而需要將數(shù)據(jù)長(zhǎng)期保存或跨程序共享。文件是最基本的數(shù)據(jù)持久化方式,也是 Python 與外部世界溝通的重要橋梁。

在現(xiàn)代編程中,文件不僅僅是“讀寫文本”,它還代表著數(shù)據(jù)的組織形式。

通過(guò)不同的文件格式(如 .txt、.csv、.json),我們可以存儲(chǔ)和處理一維列表、二維表格,甚至高維結(jié)構(gòu)化數(shù)據(jù)。

學(xué)習(xí)目標(biāo):

(1)理解文件的概念、分類及其在程序中的作用。

(2)掌握 Python 文件的打開、讀取、寫入與關(guān)閉操作。

(3)熟練使用 with 上下文與異常處理實(shí)現(xiàn)安全文件操作。

(4)了解數(shù)據(jù)的組織維度(一維、二維、高維)與常用格式(CSV、JSON)。

(5)能夠?qū)⒊绦驍?shù)據(jù)保存為文本或結(jié)構(gòu)化文件并重新加載使用。

10.1 文件概述

當(dāng)程序運(yùn)行結(jié)束后,所有變量和數(shù)據(jù)都將從內(nèi)存中消失。若要保存程序的運(yùn)行結(jié)果、記錄日志或在不同程序間共享信息,就需要借助文件(File)。

文件是數(shù)據(jù)在外部存儲(chǔ)介質(zhì)(如磁盤)上的長(zhǎng)期存放形式,是實(shí)現(xiàn)數(shù)據(jù)持久化的核心手段。

Python 提供了簡(jiǎn)單而功能強(qiáng)大的文件操作接口,使得保存結(jié)果與加載數(shù)據(jù)都非常方便。

10.1.1文件與路徑

文件由文件名和路徑組成。路徑(Path)描述了文件在計(jì)算機(jī)存儲(chǔ)中的位置。

(1)絕對(duì)路徑(Absolute Path):從磁盤根目錄開始的完整路徑。

例如:

"C:\\Users\\mediaTEA\\Documents\\data.txt"

(2)相對(duì)路徑(Relative Path):相對(duì)于當(dāng)前程序所在目錄的路徑。

例如:

"data\\result.txt"  # 當(dāng)前目錄下的 data 文件夾

Python 中常用 或 模塊處理路徑:

print(data_dir.exists())

10.1.2 文件類型

根據(jù)存儲(chǔ)形式不同,文件主要分為兩類。

(1)文本文件(Text File)

? 以字符形式存儲(chǔ)數(shù)據(jù),如 .txt、.csv、.json。

? 支持文本編輯器打開。

? 通常需要指定編碼(如 UTF-8)。

(2)二進(jìn)制文件(Binary File)

? 以字節(jié)形式存儲(chǔ),如圖片、音頻、模型文件(.jpg、.mp3、.pkl)。

? 不可直接用文本方式查看。

10.1.3文件編碼

open() 在文本模式下的默認(rèn)編碼依賴于運(yùn)行環(huán)境的區(qū)域設(shè)置,因此建議顯式指定 encoding="utf-8" 以避免跨平臺(tái)編碼問(wèn)題。

    print(f.read())

提示:

可通過(guò)標(biāo)準(zhǔn)庫(kù) .getpreferredencoding() 查看系統(tǒng) locale。

10.1.4 數(shù)據(jù)組織的維度

文件不僅僅是保存內(nèi)容的容器,它還決定了數(shù)據(jù)的組織方式。

Python 支持多種維度的數(shù)據(jù)表示。從一維的數(shù)列,到二維的表格,再到高維的嵌套結(jié)構(gòu)。不同維度的數(shù)據(jù)對(duì)應(yīng)不同的文件格式與讀取方法。

10.2 文件的使用

文件的操作流程可概括為三步:

打開(open) → 操作(讀寫) → 關(guān)閉(close)

在 Python 中,既可手動(dòng)控制文件關(guān)閉,還可通過(guò) with 上下文自動(dòng)管理資源。

10.2.1 文件的打開與關(guān)閉

使用內(nèi)置函數(shù) 打開文件。

基本語(yǔ)法結(jié)構(gòu):

f = open(file, mode, encoding=None)    # 打開文件,返回一個(gè)文件對(duì)象

常見(jiàn)模式說(shuō)明:

      'r+' 從開頭讀寫;'w+' 先截?cái)嘣僮x寫;'a+' 追加寫入、可讀取。

示例:

f.close()

提示:寫入后務(wù)必調(diào)用 .close() 關(guān)閉文件,以釋放資源。

10.2.2 with 上下文管理器

with 語(yǔ)句能自動(dòng)處理文件的關(guān)閉操作,是推薦的文件操作方式。

    f.write("追加一行文本。\n")

等價(jià)于:

    f.close()

優(yōu)點(diǎn):即使程序中途出錯(cuò),文件也會(huì)被安全關(guān)閉。

10.2.3 文件的讀寫

(1)讀取文件

相關(guān)方法:

.read(size = -1)

讀取文件全部?jī)?nèi)容或指定 size 長(zhǎng)度的字符串或字節(jié)流。

.readline(size = -1)

讀取一行或該行前指定 size 長(zhǎng)度的字符串或字節(jié)流。

說(shuō)明:與 .read() 的參數(shù)一樣,size 表示要返回的最大字符(文本模式)或字節(jié)(二進(jìn)制模式)數(shù);當(dāng) size 被指定且小于剩余內(nèi)容長(zhǎng)度時(shí)會(huì)返回不完整的行/數(shù)據(jù)片段。

.readlines(hint = -1)

讀取所有行,返回以行元素的列表。hint 是一個(gè)建議的字節(jié)/字符大小閾值(近似),并非嚴(yán)格的行數(shù)限制。

lines = f.readlines(1024)  # 大致讀取 ~1024 字節(jié)的行,返回行列表

.seek(offset, whence=0)

改變當(dāng)前文件操作指針的位置。offset 是相對(duì)于 whence 的偏移量(以字節(jié)或字符為單位,取決于文件模式)。whence 指定相對(duì)位置:0(文件開頭)、1(當(dāng)前位置)、2(文件結(jié)尾)。

f.seek(0, 2)         # 或 f.seek(0, os.SEEK_END)

示例 1:

    print(text)

示例 2:

         print(line)

示例 3:

        print(line, end="")   

若文件很大時(shí),推薦使用按行迭代 for line in f: 的方式。

(2)寫入文件

相關(guān)方法:

.write(s)

寫入字符串或字節(jié)流到文件。

.writelines(lines)

將一個(gè)元素為字符串的列表整體寫入到文件。

示例 1:

    f.write("Loss=0.45, Accuracy=0.82\n")

示例 2:

    f.writelines(ls)

.writelines() 不會(huì)自動(dòng)添加換行符,若要自動(dòng)添加換行,列表元素必須包含 \n,還可使用 print(line, file=f) 或者 f.write("\n".join(lines))。

10.2.4 文件異常處理

文件操作中常見(jiàn)的異常包括:

? FileNotFoundError:文件不存在。

? PermissionError:無(wú)訪問(wèn)權(quán)限。

? IsADirectoryError:路徑是文件夾不是文件。

示例:

    print("讀取文件時(shí)發(fā)生錯(cuò)誤:", e)

10.3 一維數(shù)據(jù)的組織與處理

Python 提供了靈活的工具來(lái)讀取、存儲(chǔ)與處理一維數(shù)據(jù),使我們能夠輕松完成統(tǒng)計(jì)實(shí)驗(yàn)結(jié)果、分析日志文件、清洗或篩選文本數(shù)據(jù)以及提取模型預(yù)測(cè)結(jié)果等任務(wù)。

10.3.1 一維數(shù)據(jù)的表示與存儲(chǔ)

最常見(jiàn)的一維數(shù)據(jù)結(jié)構(gòu)有列表(list)和字符串(str)。

列表適合保存數(shù)值型或混合型數(shù)據(jù),而字符串常用于原始文本。

例 10.3.1:將模型損失值寫入文本文件

print("模型訓(xùn)練損失值已保存。")

保存后的文件內(nèi)容為:

0.69

這種方式適用于線性、按時(shí)間順序變化的數(shù)據(jù),如溫度記錄、實(shí)驗(yàn)結(jié)果、訓(xùn)練日志等。

10.3.2 一維數(shù)據(jù)的讀取與處理

讀取文件后,可通過(guò)類型轉(zhuǎn)換與內(nèi)置函數(shù)進(jìn)行進(jìn)一步分析。

例 10.3.2:計(jì)算平均損失值

    print("無(wú)有效數(shù)據(jù)。")

輸出:

平均損失值:0.802

進(jìn)一步示例:篩選特定區(qū)間的數(shù)據(jù)

print("篩選后數(shù)據(jù):", filtered)

輸出:

篩選后數(shù)據(jù): [0.76, 0.69]

這種篩選操作在 AI 訓(xùn)練監(jiān)控中非常常見(jiàn),比如只提取低于閾值的損失以分析收斂階段。

10.3.3 一維數(shù)據(jù)的應(yīng)用

文本文件不僅可用于保存數(shù)值,也常存放事件記錄或系統(tǒng)日志。

我們可以使用字符串方法來(lái)搜索、過(guò)濾與統(tǒng)計(jì)關(guān)鍵信息。

例 10.3.3:過(guò)濾 AI 訓(xùn)練日志中的異常行

    print(e)

示例輸入文件(train_log.txt):

[INFO] Epoch 3: Loss=0.44

輸出:

[ERROR] Model failed to converge

這種文本過(guò)濾思路與現(xiàn)實(shí)中的日志監(jiān)控系統(tǒng)一致,是 AI 工程與系統(tǒng)維護(hù)的重要技能之一。

例 10.3.4:關(guān)鍵字統(tǒng)計(jì)器

統(tǒng)計(jì)一維文本數(shù)據(jù)中指定關(guān)鍵詞的出現(xiàn)次數(shù)。

print(f"關(guān)鍵詞 '酒' 出現(xiàn)次數(shù):{count}")

輸出示例:

關(guān)鍵詞 '酒' 出現(xiàn)次數(shù):3

此方法可用于自然語(yǔ)言處理(NLP)中的詞頻分析,也可擴(kuò)展為關(guān)鍵詞提取或情感統(tǒng)計(jì)等任務(wù)。

小結(jié)

本次課介紹了 Python 文件操作的基礎(chǔ)概念、路徑處理、文件類型與編碼,以及文件的打開、關(guān)閉、讀寫與異常處理方法。通過(guò)示例展示了一維數(shù)據(jù)的保存、讀取、篩選與分析,以及日志與文本的關(guān)鍵字統(tǒng)計(jì)。

下一課將進(jìn)一步講解二維及高維數(shù)據(jù)的組織與處理(如 CSV 與 JSON 文件),并結(jié)合綜合案例進(jìn)行文件應(yīng)用實(shí)踐,為實(shí)際數(shù)據(jù)處理與 AI 訓(xùn)練監(jiān)控等打下堅(jiān)實(shí)基礎(chǔ)。

點(diǎn)贊有美意,贊賞是鼓勵(lì)

特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關(guān)推薦
熱點(diǎn)推薦
吵翻天了!美國(guó)新版膳食指南重磅發(fā)布,國(guó)人如何借鑒?

吵翻天了!美國(guó)新版膳食指南重磅發(fā)布,國(guó)人如何借鑒?

營(yíng)養(yǎng)師谷傳玲
2026-01-10 14:59:39
1月11日俄烏最新:川普轉(zhuǎn)向?

1月11日俄烏最新:川普轉(zhuǎn)向?

西樓飲月
2026-01-11 20:50:46
女孩當(dāng)小姐,一晚要提供4到5次上門服務(wù),2015年被親人點(diǎn)到不赴約

女孩當(dāng)小姐,一晚要提供4到5次上門服務(wù),2015年被親人點(diǎn)到不赴約

漢史趣聞
2025-11-08 09:27:32
十人曼聯(lián)1-2布萊頓無(wú)緣32強(qiáng)!12年后足總杯再遭1輪游 黑貝弒舊主

十人曼聯(lián)1-2布萊頓無(wú)緣32強(qiáng)!12年后足總杯再遭1輪游 黑貝弒舊主

我愛(ài)英超
2026-01-12 05:19:59
70歲寇世勛現(xiàn)狀,晚年和原配一家生活,二房隨3名子女遠(yuǎn)在國(guó)外

70歲寇世勛現(xiàn)狀,晚年和原配一家生活,二房隨3名子女遠(yuǎn)在國(guó)外

豐譚筆錄
2026-01-10 07:30:13
多家設(shè)計(jì)院中層年薪被曝光!

多家設(shè)計(jì)院中層年薪被曝光!

黯泉
2026-01-11 23:26:46
中美日26年GDP預(yù)測(cè)出爐:美31萬(wàn)億,日跌破4.5萬(wàn)億,中國(guó)令人意外

中美日26年GDP預(yù)測(cè)出爐:美31萬(wàn)億,日跌破4.5萬(wàn)億,中國(guó)令人意外

史智文道
2026-01-11 19:41:47
字母哥:一開始我支持65場(chǎng)規(guī)則,但隨年齡增長(zhǎng)我想它取消

字母哥:一開始我支持65場(chǎng)規(guī)則,但隨年齡增長(zhǎng)我想它取消

懂球帝
2026-01-12 07:50:13
卡里克反超索帥成曼聯(lián)臨時(shí)主帥首選,幕后原因曝光!周一有望官宣

卡里克反超索帥成曼聯(lián)臨時(shí)主帥首選,幕后原因曝光!周一有望官宣

羅米的曼聯(lián)博客
2026-01-12 09:45:29
9場(chǎng)不。“⑸{4-1逆轉(zhuǎn)英冠隊(duì)進(jìn)足總杯32強(qiáng) 馬丁內(nèi)利戴帽+中柱

9場(chǎng)不敗!阿森納4-1逆轉(zhuǎn)英冠隊(duì)進(jìn)足總杯32強(qiáng) 馬丁內(nèi)利戴帽+中柱

我愛(ài)英超
2026-01-12 00:02:50
他100多位情婦,曾9女同床,包養(yǎng)費(fèi)達(dá)上億元,但下場(chǎng)無(wú)比凄涼

他100多位情婦,曾9女同床,包養(yǎng)費(fèi)達(dá)上億元,但下場(chǎng)無(wú)比凄涼

boss外傳
2025-10-20 00:00:03
很多人都是智力低下,只不過(guò)生活可以自理,所以一直沒(méi)有被發(fā)現(xiàn)

很多人都是智力低下,只不過(guò)生活可以自理,所以一直沒(méi)有被發(fā)現(xiàn)

夜深愛(ài)雜談
2026-01-11 19:20:55
洗碗機(jī)大反轉(zhuǎn)!砸家男越看越冤,知情人曝更多,難怪丈夫會(huì)崩潰

洗碗機(jī)大反轉(zhuǎn)!砸家男越看越冤,知情人曝更多,難怪丈夫會(huì)崩潰

八斗小先生
2026-01-10 15:30:07
特朗普對(duì)話20家美石油公司:已經(jīng)虧的120億美元就算了,你不干還有25家愿意干

特朗普對(duì)話20家美石油公司:已經(jīng)虧的120億美元就算了,你不干還有25家愿意干

紅星新聞
2026-01-11 20:14:20
B費(fèi)社媒連發(fā)“炒掉英力士”“曼聯(lián)爛透了”,俱樂(lè)部緊急發(fā)聲明

B費(fèi)社媒連發(fā)“炒掉英力士”“曼聯(lián)爛透了”,俱樂(lè)部緊急發(fā)聲明

夜白侃球
2026-01-12 10:13:04
中組部、人社部發(fā)布通知

中組部、人社部發(fā)布通知

政知新媒體
2026-01-11 14:24:03
演員閆某晶之子林某霏曾就讀“新疆班”?中戲回應(yīng):2012年未招“新疆班”,其以戶籍地北京生源報(bào)考

演員閆某晶之子林某霏曾就讀“新疆班”?中戲回應(yīng):2012年未招“新疆班”,其以戶籍地北京生源報(bào)考

每日經(jīng)濟(jì)新聞
2026-01-11 21:14:06
不上小楊就輸,楊瀚森在連上8場(chǎng)后遭DNP,此前開拓者8戰(zhàn)7勝+5連勝

不上小楊就輸,楊瀚森在連上8場(chǎng)后遭DNP,此前開拓者8戰(zhàn)7勝+5連勝

懂球帝
2026-01-12 09:40:09
官媒發(fā)文銳評(píng)竇靖童!狠狠替王菲出了口惡氣,原來(lái)李亞鵬沒(méi)撒謊

官媒發(fā)文銳評(píng)竇靖童!狠狠替王菲出了口惡氣,原來(lái)李亞鵬沒(méi)撒謊

巧妹電影
2026-01-12 10:10:37
再來(lái)一瓶高速二勝天之藍(lán),開瓶有獎(jiǎng)于德豪三分6中5,邱彪用心良苦

再來(lái)一瓶高速二勝天之藍(lán),開瓶有獎(jiǎng)于德豪三分6中5,邱彪用心良苦

金風(fēng)說(shuō)
2026-01-12 08:27:57
2026-01-12 10:56:49
MediaTea
MediaTea
專業(yè)的數(shù)字媒體、新媒體技術(shù)
1701文章數(shù) 72關(guān)注度
往期回顧 全部

科技要聞

小米二手車價(jià)大跳水:SU7半年跌5萬(wàn)元

頭條要聞

日媒披露高市早苗或有大動(dòng)作 傳出兩個(gè)方案

頭條要聞

日媒披露高市早苗或有大動(dòng)作 傳出兩個(gè)方案

體育要聞

U23國(guó)足形勢(shì):末輪不負(fù)泰國(guó)即確保晉級(jí)

娛樂(lè)要聞

留幾手為閆學(xué)晶叫屈?稱網(wǎng)友自卑敏感

財(cái)經(jīng)要聞

揭秘“穩(wěn)賺不賠”的代工項(xiàng)目騙局

汽車要聞

2026款宋Pro DM-i長(zhǎng)續(xù)航補(bǔ)貼后9.98萬(wàn)起

態(tài)度原創(chuàng)

藝術(shù)
本地
教育
公開課
軍事航空

藝術(shù)要聞

畫完這組畫,他抑郁了,后來(lái)自殺了

本地新聞

云游內(nèi)蒙|“包”你再來(lái)?一座在硬核里釀出詩(shī)意的城

教育要聞

為什么越來(lái)越多美國(guó)名校學(xué)生,選擇3年讀完本科?

公開課

李玫瑾:為什么性格比能力更重要?

軍事要聞

俄大使:馬杜羅夫婦被控制時(shí)身邊沒(méi)人

無(wú)障礙瀏覽 進(jìn)入關(guān)懷版