Python編程基礎與實踐:Python文件處理入門

Python文件處理實戰

學習目標

通過本課程的學習,學員將掌握如何在Python中打開、讀取、寫入和關閉文件,了解文本文件和二進制文件的區別,以及在文件處理中的一些最佳實踐。

相關知識點

Python文件處理

學習內容

1 Python文件處理

1.1 文件的基本操作

在Python中,文件操作是通過內置的open()函數來完成的。這個函數可以打開一個文件,并返回一個文件對象,通過這個對象可以進行文件的讀寫等操作。文件操作的基本步驟包括:打開文件、讀取或寫入數據、關閉文件。

1.1.1 打開文件

open()函數的基本語法如下:

file_object = open(file_name, mode='r', encoding=None)
file_name:要打開的文件的名稱。

mode: 打開文件的模式,常見的模式有:
‘r’:只讀模式,默認值。如果文件不存在,會拋出異常。
‘w’:寫入模式,會覆蓋已存在的文件。如果文件不存在,會創建新文件。
‘a’:追加模式,如果文件存在,指針會放在文件的末尾。如果文件不存在,會創建新文件。
‘b’:二進制模式,用于處理二進制文件。
‘+’:讀寫模式,可以與上述模式組合使用。
encoding: 指定文件的編碼格式,如’utf-8’。

1.1.2 讀取文件

讀取文件可以通過多種方法實現,包括讀取整個文件、按行讀取等。

1.1.3 讀取整個文件
with open('example.txt', 'r', encoding='utf-8') as file:content = file.read()print(content)

上述代碼中,with語句用于自動管理文件的打開和關閉。file.read()方法讀取文件的全部內容,并返回一個字符串。

1.1.4 按行讀取
with open('example.txt', 'r', encoding='utf-8') as file:for line in file:print(line.strip())  # 使用strip()方法去除每行末尾的換行符

按行讀取文件適用于處理大文件,因為不需要一次性將整個文件加載到內存中。

1.1.5 寫入文件

寫入文件同樣可以通過多種方法實現,包括寫入字符串、追加內容等。

1.1.6 寫入字符串
with open('output.txt', 'w', encoding='utf-8') as file:file.write('Hello, World!\n')file.write('This is a test.\n')

上述代碼中,file.write()方法用于寫入字符串。每次調用write()方法時,內容會被寫入文件中。

1.1.7 追加內容
with open('output.txt', 'a', encoding='utf-8') as file:file.write('This is an appended line.\n')

使用’a’模式打開文件時,寫入的內容會被追加到文件的末尾。

1.1.8 關閉文件

雖然使用with語句可以自動關閉文件,但在某些情況下,可能需要手動關閉文件。這可以通過調用文件對象的close()方法來實現:

file = open('example.txt', 'r', encoding='utf-8')
content = file.read()
print(content)
file.close()
1.2 文本文件與二進制文件

在Python中,文件可以分為文本文件和二進制文件。文本文件通常用于存儲人類可讀的文本數據,而二進制文件用于存儲非文本數據,如圖像、音頻等。

1.2.1 文本文件

文本文件通常使用文本編輯器創建和編輯,內容以字符形式存儲。在Python中,處理文本文件時,通常使用’r’、‘w’、'a’等模式,并指定編碼格式。

示例:讀取和寫入文本文件

# 讀取文本文件
with open('example.txt', 'r', encoding='utf-8') as file:content = file.read()print(content)# 寫入文本文件
with open('output.txt', 'w', encoding='utf-8') as file:file.write('Hello, World!\n')file.write('This is a test.\n')
1.2.2 二進制文件

二進制文件以字節形式存儲數據,通常用于存儲圖像、音頻等非文本數據。在Python中,處理二進制文件時,需要在模式中添加’b’,如’rb’、'wb’等。

示例:讀取和寫入二進制文件

# 讀取二進制文件
with open('example.jpg', 'rb') as file:content = file.read()print(content[:10])  # 打印前10個字節# 寫入二進制文件
with open('output.jpg', 'wb') as file:file.write(content)
1.3 文件處理的最佳實踐

在進行文件處理時,遵循一些最佳實踐可以提高代碼的健壯性和可維護性。

1.3.1 使用with語句

使用with語句可以確保文件在操作完成后自動關閉,即使發生異常也不會導致文件未關閉的問題。

with open('example.txt', 'r', encoding='utf-8') as file:content = file.read()print(content)
1.3.2 處理文件不存在的情況

在打開文件時,如果文件不存在,open()函數會拋出FileNotFoundError異常。可以通過異常處理來優雅地處理這種情況。

try:with open('nonexistent.txt', 'r', encoding='utf-8') as file:content = file.read()print(content)
except FileNotFoundError:print('文件不存在')
1.3.3 使用適當的編碼

在處理文本文件時,指定正確的編碼格式非常重要。常見的編碼格式有’utf-8’、'ascii’等。如果編碼格式不正確,可能會導致讀取或寫入文件時出現亂碼。

with open('example.txt', 'r', encoding='utf-8') as file:content = file.read()print(content)
1.3.4 檢查文件是否已關閉

在某些情況下,可能需要檢查文件是否已經關閉。可以通過檢查文件對象的closed屬性來實現。

file = open('example.txt', 'r', encoding='utf-8')
content = file.read()
print(content)
file.close()if file.closed:print('文件已關閉')
else:print('文件未關閉')
1.3.5 使用seek()和tell()方法

seek()方法用于移動文件指針的位置,tell()方法用于獲取當前文件指針的位置。這兩個方法在處理大文件時非常有用。

with open('example.txt', 'r', encoding='utf-8') as file:print(file.tell())  # 輸出當前文件指針的位置content = file.read(10)  # 讀取前10個字符print(content)file.seek(0)  # 將文件指針移動到文件開頭print(file.tell())  # 輸出當前文件指針的位置

通過本課程的學習,學員將掌握Python中文件處理的基本操作、文本文件與二進制文件的區別,以及文件處理的最佳實踐。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/91750.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/91750.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/91750.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Corrosion2靶機

打開靶機信息收集:kali里使用arp-scan -l或者netdiscover發現主機使用nmap掃描端口nmap -sS -sV -T4 -n -p- 192.168.31.20開啟了22、80、8080端口 8080發現開啟了tomcat服務掃出了他的ip以及他開放的端口,我們接下來拿瀏覽器訪問一下兩個頁面都沒有什么…

編程與數學 03-002 計算機網絡 18_物聯網與網絡

編程與數學 03-002 計算機網絡 18_物聯網與網絡一、物聯網的基本概念(一)物聯網的架構與層次(二)物聯網的關鍵技術二、物聯網網絡的構建(一)物聯網網絡的通信協議(二)物聯網網絡的拓…

【Kubernetes】ConfigMap配置管理:存儲配置參數,創建到容器掛載

在Kubernetes中,配置管理是應用部署的重要環節。ConfigMap作為存儲非敏感配置數據的資源對象,能幫助我們實現"配置與代碼分離",讓應用部署更靈活。一、什么是ConfigMap? ConfigMap是Kubernetes中用于存儲非加密配置數據…

Promise和回調地獄

順序執行 vs. 異步操作: 當我們說“順序執行”,通常是指 操作按順序發生。而 異步操作 指的是操作在后臺執行,不會阻塞其他操作,通常會使用回調、Promise 或 async/await 來處理結果。 在 Promise 鏈式調用 的情況下,雖…

LeetCode 65:有效數字

LeetCode 65:有效數字問題本質與挑戰 需判斷字符串是否為有效數字,規則涉及整數、小數、指數(e/E)的復雜組合,如: 整數:123、-45、678小數:1.2、.3、4.、5.6指數:1e10、2…

數據結構之順序表應用與雙指針法

元素刪除通過元素移動的方式來模擬刪除操作:將指定下標后的所有元素依次向前移動一位,覆蓋要刪除的元素,從而達到 "刪除" 的效果。 通過自定義函數實現刪除功能,需要傳入數組、數組長度的指針(因為要修改長度…

Python編程基礎與實踐:Python基礎數據類型入門

Python變量與數據類型實踐 學習目標 通過本課程的學習,學員可以掌握Python中變量的基本概念,了解并能夠使用Python的基本數據類型,包括整型、浮點型、字符串和布爾值。此外,學員還將學習如何在實際編程中聲明和使用這些數據類型。…

深入解析C/C++函數變量傳遞:棧、堆與全局變量的生命周期之旅

資料合集下載鏈接: ?https://pan.quark.cn/s/472bbdfcd014? 在編程學習中,函數是構建程序的基石,而理解變量如何在函數之間正確、安全地傳遞,則是從入門到進階的關鍵一步。我們經常會遇到這樣的困惑:為什么一個指針在某個函數里工作正常,傳遞給另一個函數后卻變成了“…

Ubuntu18網絡連接不上也ping不通網絡配置問題排查與解決方法

Ubuntu 18啟動以后發現連接不上網絡,執行 ip a命令或者ifconfig都顯示不了正確的地址(192.168.xxx.xxx)。 剛裝好系統是沒問題的,打算使用FTP開啟ftp服務與windows互傳文件,安裝了net-tools插件就突然連不上網絡了,懷疑是網絡配置被修改了。 經過了一段時間折騰終于解決了,…

【計算機網絡】Socket網絡編程

目錄 一、主機字節序列和網絡字節序列 二、套接字地址結構 1、IPv4 地址結構 (sockaddr_in) 2、IPv6 地址結構 (sockaddr_in6) 3、通用套接字地址結構 (sockaddr) 4、Unix域套接字地址結構 (sockaddr_un) 5、專用 socket 地址結構 6、套接字地址結構的轉換 字符串轉二進制地址 …

網頁操作自動化解決方案:如何用Browser-Use+CPolar提升企業運營效率

文章目錄前言1. 安裝Ollama2. Gemma3模型安裝與運行3. 虛擬環境準備3.1 安裝Python3.2. 安裝conda4. 本地部署Brower Use WebUI4.1 創建一個新conda環境4.2 克隆存儲庫4.3 安裝依賴環境4.4 安裝瀏覽器自動化工具4.5 修改配置信息5. 本地運行測試6. 安裝內網穿透6.1 配置公網地址…

Pycharm的設置過程

20250802 用于記錄pycharm的設置過程 編輯器相關 python語言設置文件注釋 在設置的編輯器部分,按照需求設置模板! 函數生成注釋

GaussDB as的用法

通過使用 SQL,可以為表名稱或列名稱指定別名(Alias)。1 別名的作用SQL 別名用于為表或表中的列提供臨時名稱。 SQL 別名通常用于使列名更具可讀性。 SQL 一個別名只存在于查詢期間。 提高SQL執行效率與編寫SQL代碼效率。2 使用別名的場景在下…

Prim算法

一,prim算法邏輯1.理解:克魯斯卡爾算法關注的是邊,普里姆算法關注的是點把圖中每個頂點比作孤島,點亮一座孤島就可以解鎖附近的孤島每次解鎖的點都是離自身最近的點2.普里姆算法流程a.采用鄰接矩陣表示,考慮要查找最小…

嵌入式學習之硬件——51單片機 1.0

一、基礎知識1.什么是嵌入式?嵌入式以應用為中心,計算機技術為基礎,軟硬件可裁剪的專用計算機系統;2.嵌入式的應用?消費電子、無人駕駛、儲能、新能源........3.嵌入式發展?(1)第一階…

51c大模型~合集161

自己的原文哦~ https://blog.51cto.com/whaosoft/14079111 #這家國內公司,在給xx智能技術棧做「通解」 打通機器人智能化的關鍵:眼腦手。 xx智能(Embodied Intelligence)是 AI 領域里熱度極高的賽道:給大模型…

Linux9 root密碼修改

開機按e進入在linux行即quiet后面輸入rd.break ctrlx進入內核輸入mount -o remount,rw /sysrootchroot /sysrootpasswd root即可修改密碼輸入touch /.autorelabelexitexit等待即可

提示詞增強工程(Prompt Enhancement Engineering)白皮書草稿

提示詞增強工程(Prompt Enhancement Engineering)白皮書草稿 作者: 技術人進化社 Email:2819699195qq.com 日期: 2025年7月30日 1. 引言 隨著大型語言模型(LLM)能力的飛速發展,如何高…

電路元器件

電流單位 電壓 電阻單位 電阻的決定式 歐姆定律 交流電和直流電 交流電 串聯電路 并聯電路 在線模擬器 Circuitjs web 在線電路模擬器 下載

廣泛分布于內側內嗅皮層全層的速度細胞(speed cells)對NLP中的深層語義分析的積極影響和啟示

速度細胞(Speed Cells)作為內側內嗅皮層(MEC)的核心神經元,通過編碼運動速度信息與網格細胞協同實現動態路徑整合。這一神經機制為自然語言處理(NLP)的深層語義分析提供了以下關鍵啟示和影響&am…